插入是向 MongoDB 中添加数据的基本方法。MongoDB 主要使用 db.collection.insert()
方法向目标集合创建文档。早期版本可以使用 ,但现已废弃。db.collection.save()
插入文档
insert 方法
插入方法 insert 即可以插入单条文档,也可以进行批量插入操作,语法如下:
db.collection.insert(
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
参数各选项意义如下:
参数 | 类型 | 描述 |
---|---|---|
document | document or array | 要插入的单个文档或文档数组。 |
writeConcern | document | 可选项,针对写操作的性能和安全进行设置,让用户根据业务权衡。 |
ordered | boolean | 可选项,是否遵循指定的文档顺序进行插入操作。 |
单个文档插入的示例:
-> db.products.insert( { _id: 10, item: "box", qty: 20 } )
当然也可以不指定主键 _id,这样 MongoDB 会自动生成主键:
-> db.products.insert( { item: "box", qty: 20 } )
插入单个文档
MongoDB 在 3.2 版本开始,针对单个文档插入提供了专有的方法 db.collection.insertOne()
。
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
和 insert 方法不同的是,一是文档数据只能填写一条,二是少了 ordered 参数。
下例等同于上面的 insert 方法插入示例:
-> db.products.insertOne( { _id: 10, item: "box", qty: 20 } )
批量插入文档
如果要向集合中插入多个文档,使用批量插入会快一些。使用批量插入,可以将一组文档传递给 MongoDB。
MongoDB 在 3.2 版本开始,新增了专门的批量插入方法 db.collection.insertMany()
。
语法和 insert 方法一样,只是文档需要指定多个,以数组形似给出:
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
示例如下:
-> db.products.insertMany( [
{ _id: 10, item: "large box", qty: 20 },
{ item: "small box", qty: 55 },
{ item: "medium box", qty: 30 }
] )
从 MongoDB 3.6 开始,默认配置最大的批量插入条数是 100000,可以通过 isMaster.maxWriteBatchSize 修改。