CRUD操作包括创建、读取、更新和删除文档。
创建操作
执行创建或者插入操作可向集合中添加文档。如果集合不存在,插入操作会创建此集合。
MongoDB提供下列方法向集合中插入文档:
- db.collection.insert()
- db.collection.insertOne() New in version 3.2
- db.collection.insertMany() New in version 3.2
在MongoDB中,插入操作的目标是一个集合。所有的写操作在单文档级别具有原子性。
![a9ab07670ba7268f8281f2510b36e8f8.png](https://i-blog.csdnimg.cn/blog_migrate/25927c76d6439335612b265da9d5ed0a.jpeg)
读操作
读操作是指在一个集合中查找文档;例如查询一个集合中的所有文档。MongoDB提供了下面的方法来读取集合中的文档:
![6b4d27fb7c5aad02b9c959b9d85f8f8f.png](https://i-blog.csdnimg.cn/blog_migrate/616fc9e3bb423b2d58330c6dec213e2b.jpeg)
db.collection.find()
你可以指定查询过滤器或准则来确定要返回的文档。
更新操作
更新操作是指修改集合中已存在的文档。MongoDB提供下列方法来执行更新操作:
· db.collection.update()
· db.collection.updateOne() New in version 3.2
· db.collection.updateMany() New in version 3.2
· db.collection.replaceOne() New in version 3.2
在MongoDB中,更新操作的目标是一个集合。所有的写操作在单文档级别具有原子性。
你能够指定准则或者过滤器来确定要更新的文档。更新操作所使用的过滤器和读操作所使用的过滤器具有相同的句法规则。
![893f13d0d70cfe61fe56126d5964bdcc.png](https://i-blog.csdnimg.cn/blog_migrate/f314db53c555ca0c48bec94f35f1b1a0.jpeg)
删除操作
删除操作是指从集合中移除文档。MongoDB提供下列操作来实施删除操作:
· db.collection.remove()
· db.collection.deleteOne() New in version 3.2
· db.collection.deleteMany() New in version 3.2
在MongoDB中,删除操作的目标是一个集合。所有的写操作在单文档级别具有原子性。
你能够指定准则或者过滤器来确定要删除的文档。删除操作所使用的过滤器和读操作所使用的过滤器具有相同的句法规则。
![5e5888271e878ecc6a8b110b36459ac5.png](https://i-blog.csdnimg.cn/blog_migrate/4409cb94bc85ff3392ea64389bbb1a9f.jpeg)
批量写入操作
MongoDB 提供了批量写入文档功能。
1 插入操作
1.1 插入方法
为向集合中插入文档,MongoDB提供下列方法:
- db.collection.insertOne()
- db.collection.insertMany()
- db.collection.insert()
这章提供了一些可在mongo shell中执行的例子:
1.2 插入行为
集合的创建
如果集合不存在,插入操作会创建集合。
_id字段
在MongoDB中,存储在集合中的文档需要一个_id字段作为主键。如果没有指定_id字段,MongoDB会使用ObjectIds 作为_id字段的默认值。例如,待插入文档不包含顶级_id字段,MongoDB会添加一个默认值为ObjectIds 的_id字段。
另外,如果mongod接受一个不包含_id字段的待插入文档(例如,通过一个带有更新设置选项的更新操作),mongod会添加一个默认值为ObjectIds 的_id字段。
原子性
在MongoDB中,写操作在单文档级别具有原子性。
1.3 db.collection.insertOne()
3.2版本中新增
db.collection.insertOne():向集合中插入一个文档。
下面的例子为向集合users 中插入一个新文档。新文档有三个字段:name, age, 和 status,因为文档没有指定_id字段,MongoDB会添加一个值为ObjectIds 的_id字段。
db.users.insertOne( { name: "sue