MongoDB 基础教程

MongoDB 高级教程

MongoDB 笔记

MongoDB 添加数据(插入/创建文档)的操作方法详解


插入是向 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 修改。