本文来自与自己的博客:www.wangerbao.comBulk Write Operations操作是mongoDB3.2的新增功能,语法如下:db.collection.bulkWrite(  
本文来自与自己的博客:www.wangerbao.com
Bulk Write Operations操作是mongoDB3.2的新增功能,语法如下:
db.collection.bulkWrite(
[ <operation 1>, <operation 2>, ... ],
{
writeConcern : <document>,
ordered : <boolean>
}
)
其中ordered是个需要注意的地方,根据官方描述:
事例如下
初始化数据,初始化3条
> db.log.count();
0
> db.log.bulkWrite( [
... { insertOne : { "document" : {"_id" : 1, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } },
... { insertOne : { "document" : {"_id" : 2, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } },
... { insertOne : { "document" : {"_id" : 3, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } }
... ],{ordered:true});
{
"acknowledged" : true,
"deletedCount" : 0,
"insertedCount" : 3,
"matchedCount" : 0,
"upsertedCount" : 0,
"insertedIds" : {
"0" : 1,
"1" : 2,
"2" : 3
},
"upsertedIds" : {
}
}
> db.log.count();
3
order默认:true,第二条数据主键冲突,则只会插入第一条数据,数据总量为4
第二条数据主键冲突,则只会插入一条数据
> db.log.bulkWrite( [
... { insertOne : { "document" : {"_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } },
... { insertOne : { "document" : {"_id" : 2, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } },
... { insertOne : { "document" : {"_id" : 5, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } }
... ],{ordered:true});
2017-04-10T17:48:37.960+0800 E QUERY [thread1] BulkWriteError: write error at item 1 in bulk operation :
BulkWriteError({
"writeErrors" : [
{
"index" : 1,
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: c_log.log index: _id_ dup key: { : 2.0 }",
"op" : {
"_id" : 2,
"char" : "Dithras",
"class" : "barbarian",
"lvl" : 4
}
}
],
"writeConcernErrors" : [ ],
"nInserted" : 1,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
BulkWriteError@src/mongo/shell/bulk_api.js:372:48
BulkWriteResult/this.toError@src/mongo/shell/bulk_api.js:336:24
Bulk/this.execute@src/mongo/shell/bulk_api.js:1173:1
DBCollection.prototype.bulkWrite@src/mongo/shell/crud_api.js:191:20
@(shell):1:1
> db.log.count();
4
order修改为false,第一条数据主键冲突,2、3条没问题,则数据总量为6
> db.log.bulkWrite( [
... { insertOne : { "document" : {"_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } },
... { insertOne : { "document" : {"_id" : 6, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } },
... { insertOne : { "document" : {"_id" : 5, "char" : "Dithras", "class" : "barbarian", "lvl" : 4 } } }
... ],{ordered:false});
2017-04-10T17:49:36.539+0800 E QUERY [thread1] BulkWriteError: write error at item 0 in bulk operation :
BulkWriteError({
"writeErrors" : [
{
"index" : 0,
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: c_log.log index: _id_ dup key: { : 4.0 }",
"op" : {
"_id" : 4,
"char" : "Dithras",
"class" : "barbarian",
"lvl" : 4
}
}
],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
BulkWriteError@src/mongo/shell/bulk_api.js:372:48
BulkWriteResult/this.toError@src/mongo/shell/bulk_api.js:336:24
Bulk/this.execute@src/mongo/shell/bulk_api.js:1173:1
DBCollection.prototype.bulkWrite@src/mongo/shell/crud_api.js:191:20
@(shell):1:1
> db.log.count();
6
--结束END--
本文标题: Mongodb的Bulk Write 操作
本文链接: https://lsjlt.com/news/34819.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0