目录
本文以mongo shell为例,介绍插入文档。
创建集合
如果集合不存在,则插入操作将创建该集合。
一、插入单个文档
db.collection.insertOne()将单个文档插入到集合中。
下面的示例:将一个新文档插入到inventory集合。如果文档未指定_id字段,则MongoDB自动将ObjectId值的_id字段添加到新文档中。请参阅insert行为。
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
insertOne()返回包含新插入的文档的_id字段值的文档。有关返回文档的示例,请参见db.collection.insertOne()。
要查看插入的文档,请查询集合:
db.inventory.find( { item: "canvas" } )
二、插入多个文档
3.2版新增功能。
db.collection.insertMany()将多个文档插入到一个集合中。插入时将文档数组传给该方法。
下面的示例:将三个新文档插入inventory集合。如果文档未指定_id字段,则MongoDB自动向每个文档添加ObjectId值的_id字段。
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])
insertMany()返回包含新插入的文档_id字段值的文档。有关示例,请参考。
要查看插入的文档,请查询集合:
db.inventory.find( {} )
三、插入操作特点
1. 创建集合
插入时如果该集合不存在,则插入操作将创建该集合。
2. _id字段
在MongoDB中,存储在集合中的每个文档都需要一个唯一的_id字段作为主键。如果插入的文档省略_id字段,则MongoDB驱动程序会自动为_id字段生成ObjectId值。
同上,通过upsert:true通过更新操作插入的文档也会自动生成_id字段。
3. 原子性
MongoDB中的所有写操作都是单文档级别的原子操作。有关MongoDB和原子性的更多信息,请参见原子性与事务。
4. 写确认
对于写关注,可以指定MongoDB向写操作请求的确认级别。有关详细信息,请参见写关注。
更多请参阅:
四、插入文档的方法
1. insert方法
MongoDB提供了以下将文档插入到集合中的方法:
将单个文档插入集合中 | |
将多个文档插入一个集合中 | |
将一个或多个文档插入到集合中 |
2. 其他方法
以下方法也可以将新文档添加到集合中:
- db.collection.update() 与 upsert: true 选项一起使用.
- db.collection.updateOne() 与 upsert: true 选项一起使用.
- db.collection.updateMany() 与 upsert: true 选项一起使用.
- db.collection.findAndModify()与 upsert: true 选项一起使用.
- db.collection.findOneAndUpdate() 与 upsert: true 选项一起使用.
- db.collection.findOneAndReplace()与 upsert: true 选项一起使用.
- db.collection.save().
- db.collection.bulkWrite().
有关更多方法和示例,请参见各个方法的详细介绍。