mongoDB 方法 -- 插入文档 insert
特别说明: mongoDB 中的document类型,是二进制的json对象(bson)
1、db.collection.insert()
1.1 作用:
将一个或多个文档插入集合中。如果该集合不存在,则该 insert()方法将创建该集合。
1.2 语法:
db.collection.insert(
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
1.3 参数说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| document | 文档或文档数组 | 要插入集合的文档或文档数组。 |
| writeConcern | 文档 | 可选,MongoDB写入安全机制,如果在事务中运行,请不要为操作明确设置writeConcern |
| ordered | 布尔值 | 可选,如果为true,按在数组顺序插入文档。如果其中一个文档发生错误,则结束插入且不处理其余文档。 如果为false,执行无序插入。如果其中一个文档发生错误,将继续处理数组中的其余文档。默认为true。 |
1.4 行为表现
如果写入的文档未指定_id字段,则在插入之前创建_id字段,并赋值唯一的ObjectId()类型的值。如果文档包含一个_id字段,则该_id值在集合中必须唯一,以避免重复的键错误
1.5 例子
db.products.insert( { item: "card", qty: 15 } )
#{ "_id" : ObjectId("5063114bd386d8fadbd6b004"), "item" : "card", "qty" : 15 }
db.products.insert( { _id: 10, item: "box", qty: 20 } )
#{ "_id" : 10, "item" : "box", "qty" : 20 }
db.products.insert(
[
{ _id: 11, item: "pencil", qty: 50, type: "no.2" },
{ item: "pen", qty: 20 },
{ item: "eraser", qty: 25 }
]
)
#{ "_id" : 11, "item" : "pencil", "qty" : 50, "type" : "no.2" }
#{ "_id" : ObjectId("51e0373c6f35bd826f47e9a0"), "item" : "pen", "qty" : 20 }
#{ "_id" : ObjectId("51e0373c6f35bd826f47e9a1"), "item" : "eraser", "qty" : 25 }
db.products.insert(
[
{ _id: 20, item: "lamp", qty: 50, type: "desk" },
{ _id: 21, item: "lamp", qty: 20, type: "floor" },
{ _id: 22, item: "bulk", qty: 100 }
],
{ ordered: false }
)
2、db.collection.insertOne()
2.1 作用:
将一个文档插入集合中,如果该集合不存在,则该 insertOne()方法将创建该集合
2.2 语法:
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
2.3 参数说明参考 insert()方法
2.4 行为表现
insertOne()与不兼容 db.collection.explain(),使用insert()代替
_id字段的创建与 insert() 方法相同
2.5 例子
db.products.insertOne( { item: "card", qty: 15 } );
db.products.insertOne( { _id: 10, item: "box", qty: 20 } );
3、db.collection.insertMany()
3.1 作用:
将多个或多个文档插入集合中。如果该集合不存在,则该 insert()方法将创建该集合。
3.2 语法:
db.collection.insert(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
3.3 参数说明,参考 insert() 方法
3.4 行为表现
每个组中的操作数不能超过maxWriteBatchSize数据库的值。从MongoDB 3.6开始,此值为100,000。该值显示在该isMaster.maxWriteBatchSize字段中。
insertOne()与不兼容 db.collection.explain(),使用insert()代替
_id字段的创建与 insert() 方法相同
3.5 例子
db.products.insertMany( [
{ item: "card", qty: 15 },
{ item: "envelope", qty: 20 },
{ item: "stamps" , qty: 30 }
] );
4、 db.collection.save() 已弃用
4.1 作用:
根据其参数更新现有文档或插入新文档。
4.2 语法:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
4.3 参数说明 参考 insert() 方法
4.4 行为表现
如果文档不包含_id字段,插入文档, save()方法调用的 insert()方法。在操作过程中, 将创建一个ObjectId()并将其分配给该_id字段。
如果文档包含_id字段,更新文档,等效于基于_id字段查询,调用update()方法时将upsert选项设置为true。目标文档会被完全替换更新(全量更新)
从MongoDB 4.2开始,save()方法不能用于没有被_id分片的分片集合
4.5 例子
db.products.save( { item: "book", qty: 40 } )
#{ "_id" : ObjectId("50691737d386d8fadbd6b01d"), "item" : "book", "qty" : 40 }
db.products.save( { _id: 100, item: "water", qty: 30 } )
#{ "_id" : 100, "item" : "water", "qty" : 30 }
# 会完全替换更新
db.products.save( { _id : 100, item : "juice" } )
#{ "_id" : 100, "item" : "juice" }
官网详情:https://docs.mongodb.com/manual/reference/insert-methods/
https://docs.mongodb.com/manual/reference/method/db.collection.save/

浙公网安备 33010602011771号