On this page
insert
在本页面
Definition
insert
- 2.6 版的新功能。
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
- 命令的状态。
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 }"
}
]
}