MongoDB是基于分布式文件存储的数据库,介于关系型数据库和非关系型数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。由C++编写,入门简单,使用灵活,可以结合Node使用,所以对前端程序员也是极其友好的。
-
安装(以windows操作系统为例)
- 官网地址,根据自己的操作系统下载完之后安装即可,安装过程中可以自定义安装目录,默认装在C盘。
-
创建数据目录
- MongoDB将数据存储在db目录下,但这个目录不会自动创建,需要手动创建。(注意:数据目录应该放在安装的根目录下)以C盘为例,在C盘下创建data文件夹,data下创建db文件夹。
查看MongoDB版本
mongo -version
1. 启动数据库
mongod
2. 连接数据库(再开启一个终端)
mongo
基于CRUD的基本命令使用
1. 显示所有数据库
show dbs
2. 切换到指定数据库
use `数据库名称`
- 如果没有会自动创建,但是再执行
show dbs
的时不会显示,只有插入数据以后才显示。
3. 查看当前所在的数据库
db
4. 创建集合
db.createCollection(name, options)
- name为集合名
- options为可选的对象参数,包括size,max等属性
5. 显示当前数据库的所有集合
show collections
6. 删除某个集合
db.Collection_Name.drop()
7. 插入数据
db.Collection_Name.insert(document)
-
Collection_Name
为集合名,如果当前数据库中没有该集合,MongoDB 会自动创建并插入文档。 - Use:
- db.userInfo.insertOne({"name": "Jack", "age": 18})
8. 更新数据
db.Collection_Name.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
- query 查询条件
- update 更新后的数据
- 参数3 可选
-
upsert
可选,这个参数的意思是,如果不存在update的记录,是否插入newObj,true为插入,默认是false,不插入。 -
multi
可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新 -
writeConcern
可选,抛出异常的级别。
-
9. 查询数据
db.Collection_Name.find(query, projection)
query 可选,查询条件
projection 可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
-
如果参数为空,读取到的是所有数据
以易读的方式来读取数据
db.Collection_Name.find().pretty()
- Use:
- db.userInfo.find()
- db.userInfo.find().prety()
- Use:
10. 多条件查询
- AND
db.Collection_Name.find({key1: value1, key2 :value2}).pretty()
- OR
db.Collection_Name.find(
{
$or: [
{key1: value1}, {key2: value2}
]
}
).pretty()
- AND 和 OR联合使用
db.col.find({key1: value1}, $or: [{key2: value2}, {key3: value3}]}).pretty()
11. 删除数据
db.collection.remove(
<query>,
<justOne>
)
如果 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档。
- writeConcern :(可选)抛出异常的级别。
以上为基本的CRUD使用。