insert

在本页面

Definition

  • insert
    • 2.6 版的新功能。

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

该命令具有以下语法:

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

insert命令具有以下字段:

FieldTypeDescription
insertstring目标集合的名称。
documentsarray一个或多个要插入命名集合的文档的数组。
orderedboolean可选的。如果为true,则在插入文档失败时返回,而不会插入inserts数组中列出的所有剩余文档。如果为false,则在插入文档失败时,continue 插入其余文档。默认为true
writeConcerndocument可选的。表示insert命令的write concern的文档。省略使用默认的写关注。
bypassDocumentValidationboolean可选的。使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

    • 命令的状态。
  • insert. n

    • 插入的文件数。
  • insert. writeErrors

    • 文档数组,其中包含有关在插入操作期间遇到的任何错误的信息。 writeErrors数组包含针对每个错误插入的错误文档。

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

  • insert.writeErrors. index

    • 一个整数,用于标识documents数组中的文档,该数组使用从零开始的索引。
  • insert.writeErrors. code

    • 标识错误的整数值。
  • insert.writeErrors. errmsg

    • 错误的描述。
  • insert. writeConcernError

    • 描述与写关注有关的错误的文档,其中包含以下字段:
  • insert.writeConcernError. code

    • 标识写关注错误原因的整数值。
  • insert.writeConcernError. errmsg

    • 写关注错误原因的描述。

以下是为单个文档成功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 }"
      }
   ]
}