MongoDB基础
|
|
1. 基本概念
集合
集合类似于数组,在集合中可以存放文档
文档
文档是文档数据库的最小单元,我们操作和存储的内容都是文档
在MongoDB中数据库和集合都不需要手动创建
当创建文档时,如果文档所在的集合或数据库不存在,会自动创建集合和数据库
2. 基本指令
-
show dbs
显示当前所有数据库
-
use [db names]
进入到指定的数据库中
-
db
表示当前所处的数据库
-
show collections
查看数据库中所存在的集合
3. CRUD
(1) 插入文档
-
db.<collection>.insert()
-
向集合中插入1个或多个文档
-
向test数据库中的 stus 集合中插入一个新的学生对象
{name: "孙悟空", age: 18, gender: "male"}
1 2 3 4 5
db.stus.insert({ name: "孙悟空", age: 18, gender: "male" })
-
-
向集合中插入文档时,如果没有指定
_id
属性,则数据库会用ObjectID()
自动为文档添加_id
,改属性作为文档的唯一标识。 -
可以自己属性
_id
,数据库就不会再添加;如果自己指定,也必须确保唯一性 -
db.<collection>.insertOne()
-
db.<collection>.insertMany()
(2) 查询文档
-
db.<collection>.find()
-
查询集合中所有符合条件的文档
-
find()
可以接受一个对象作为条件find({})
也表示查询所有文档{字段名: 值}
: 查询字段是指定值的文档 -
find()
返回是一个数组,可以用[]
索引
-
-
db.<collection>.findOne()
- 查询集合中符合条件的第一个文档
findOne()
返回的是一个文档
-
db.<collection>.find().count() / db.<collection>.find().length
-
MongoDB支持通过内嵌文档的属性查询,如果要查询内嵌文档,通过
.
来匹配;如果要通过内嵌文档进行查询,此时属性名必须使用引号1 2 3
db.users.find({ "hobby.movies": "hero" });
-
.limit()
可以设置显示数据的上限 -
分页数据显示
-
.skip((页码-1) * 每页显示的条数).limit(每页显示的条数)
-
.skip()
用于跳过指定数量的数据 -
MongoDB会自动调整
skip()
和limit()
的位置
-
(3) 修改文档
-
db.<collection>.update(查询条件,新对象)
-
默认情况下用新对象替换旧对象
1 2
//替换 db.stus.update({name: "haven"}, {age: 28})
-
如果需要修改指定属性,而不是替换,需要使用修改操作符
-
$set
可以用来修改文档中的指定属性
1 2 3 4 5 6 7 8
db.stus.update( {"_id" : ObjectId("5da96ae4298c2eb5254c4588")}, {$set:{ gender: "male", address: "liu sha he" } } )
-
$unset
可以用来删除文档的指定属性
-
update()
默认情况只改一个
-
-
db.<collection>.updateMany()
- 同时修改多个符合条件的文档
-
db.<collection>.updateOne()
- 更新第一个符合条件的文档
-
db.<collection>.replaceOne()
- 替换一个文档
-
$push
: 向数组中添加一个元素$addToSet
: 向数组中添加一个元素,且没有重复
(4) 删除文档
-
db.<collection>.remove()
- 可以根据条件来删除文档,传递的条件的方式和
find()
一样 - 默认情况下,删除符合条件的所有文档
- 如果
remove()
第二个参数为true
,则只会删除一个 - 如果只传递一个空对象作为参数,则删除全部文档
- 可以根据条件来删除文档,传递的条件的方式和
-
db.<collection>.deleteOne()
-
db.<collection>.deleteMany()
-
db.<collection>.drop()
删除整个集合
-
db.dropDatabase()