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 5db.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 3db.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 8db.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()