insert

在本页面

Definition

insert命令将插入一个或多个文档,并返回包含所有插入状态的文档。 MongoDB 驱动程序提供的插入方法在内部使用此命令。

该命令具有以下语法:

{
   insert: <collection>,
   documents: [ <document>, <document>, <document>, ... ],
   ordered: <boolean>,
   writeConcern: { <write concern> },
   bypassDocumentValidation: <boolean>
}

insert命令具有以下字段:

Field Type Description
insert string 目标集合的名称。
documents array 一个或多个要插入命名集合的文档的数组。
ordered boolean 可选的。如果为true,则在插入文档失败时返回,而不会插入inserts数组中列出的所有剩余文档。如果为false,则在插入文档失败时,continue 插入其余文档。默认为true
writeConcern document 可选的。表示insert命令的write concern的文档。省略使用默认的写关注。
bypassDocumentValidation boolean 可选的。使insert在操作过程中绕过文档验证。这使您可以插入不符合验证要求的文档。


版本 3.2 中的新功能。

Returns: 包含操作状态的文档。有关详情,请参见Output

Behavior

所有documents数组元素的总大小必须小于或等于BSON 文档的最大大小

documents数组中的文档总数必须小于或等于maximum bulk size

insert命令增加了对bypassDocumentValidation选项的支持,该选项使您可以在使用验证规则在集合中插入或更新文档时绕过document validation

Examples

插入单个文档

将文档插入users集合:

db.runCommand(
   {
      insert: "users",
      documents: [ { _id: 1, user: "abc123", status: "A" } ]
   }
)

返回的文档表明该命令已成功插入文档。有关详情,请参见Output

{ "ok" : 1, "n" : 1 }

Bulk Insert

users集合中插入三个文档:

db.runCommand(
   {
      insert: "users",
      documents: [
         { _id: 2, user: "ijk123", status: "A" },
         { _id: 3, user: "xyz123", status: "P" },
         { _id: 4, user: "mop123", status: "P" }
      ],
      ordered: false,
      writeConcern: { w: "majority", wtimeout: 5000 }
   }
)

返回的文档表明该命令已成功插入三个文档。有关详情,请参见Output

{ "ok" : 1, "n" : 3 }

Output

返回的文档包含以下字段的子集:

每个错误文档均包含以下字段:

以下是为单个文档成功insert返回的示例文档:

{ ok: 1, n: 1 }

以下是为两个文档的insert返回的示例文档,该文档成功插入一个文档,但另一个文档遇到错误:

{
   "ok" : 1,
   "n" : 1,
   "writeErrors" : [
      {
         "index" : 1,
         "code" : 11000,
         "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.users.$_id_  dup key: { : 1.0 }"
      }
   ]
}
首页