Mongo 像 insertMany 这样的批量操作会部分失败吗?
Can Mongo Bulk Operations like insertMany Partially Fail?
在网上搜索文档和帖子后,有一件事情我一直不清楚 Mongo。
当您尝试将文档批量写入如下例所示的集合时,您是否有可能获得 一些 成功写入的文档,但有些却没有't?
db.products.insertMany( [
{ item: "card", qty: 15 },
{ item: "envelope", qty: 20 },
{ item: "stamps" , qty: 30 }
] );
换句话说,您是否遇到过为 card 和 envelope 项目创建文档的情况,但是 不 邮票 项目?
我正在努力提高我公司某些流程的性能,我的团队中存在一些争论,即批量插入或更新会真正引起什么样的错误场景,所以如果有人有明确的答案,那太棒了。我知道通常 mongo 查询不是事务性的,除非您明确说明,但这是一个不清楚的领域。
看看这个例子:
db.products.insertMany([
{ _id: 1, item: "card", qty: 15 },
{ _id: 2, item: "envelope", qty: 20 },
{ _id: 1, item: "stamps", qty: 30 }
]);
uncaught exception: BulkWriteError({
"writeErrors" : [
{
"index" : 2,
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: so.products index: _id_ dup key: { _id: 1.0 }",
"op" : {
"_id" : 1,
"item" : "stamps",
"qty" : 30
}
},
],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}) :
行为应该是显而易见的。请注意,默认情况下,文档的插入顺序与命令中的顺序相同,除非您指定选项 ordered: false
在网上搜索文档和帖子后,有一件事情我一直不清楚 Mongo。
当您尝试将文档批量写入如下例所示的集合时,您是否有可能获得 一些 成功写入的文档,但有些却没有't?
db.products.insertMany( [
{ item: "card", qty: 15 },
{ item: "envelope", qty: 20 },
{ item: "stamps" , qty: 30 }
] );
换句话说,您是否遇到过为 card 和 envelope 项目创建文档的情况,但是 不 邮票 项目?
我正在努力提高我公司某些流程的性能,我的团队中存在一些争论,即批量插入或更新会真正引起什么样的错误场景,所以如果有人有明确的答案,那太棒了。我知道通常 mongo 查询不是事务性的,除非您明确说明,但这是一个不清楚的领域。
看看这个例子:
db.products.insertMany([
{ _id: 1, item: "card", qty: 15 },
{ _id: 2, item: "envelope", qty: 20 },
{ _id: 1, item: "stamps", qty: 30 }
]);
uncaught exception: BulkWriteError({
"writeErrors" : [
{
"index" : 2,
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: so.products index: _id_ dup key: { _id: 1.0 }",
"op" : {
"_id" : 1,
"item" : "stamps",
"qty" : 30
}
},
],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
}) :
行为应该是显而易见的。请注意,默认情况下,文档的插入顺序与命令中的顺序相同,除非您指定选项 ordered: false