Mongodb的Bulk Write 操作
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文来自与自己的博客:www.wangerbao.comBulk Write Operations操作是mongodb3.2的新增功能,语法如下:db.collection.bulkWrite(
千家信息网最后更新 2025年11月08日Mongodb的Bulk Write 操作
本文来自与自己的博客:www.wangerbao.com
Bulk Write Operations操作是mongodb3.2的新增功能,语法如下:
db.collection.bulkWrite( [, , ... ], { writeConcern : , ordered : })
其中ordered是个需要注意的地方,根据官方描述:
默认是ture,也就是按照顺序插入数据,如果中间出现错误则不会在继续执行
如果是false,则mongo会采用并发的方式插入数据,中间出现错误对后续操作无影响
事例如下
初始化数据,初始化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();3order默认: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:48BulkWriteResult/this.toError@src/mongo/shell/bulk_api.js:336:24Bulk/this.execute@src/mongo/shell/bulk_api.js:1173:1DBCollection.prototype.bulkWrite@src/mongo/shell/crud_api.js:191:20@(shell):1:1> db.log.count();4order修改为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:48BulkWriteResult/this.toError@src/mongo/shell/bulk_api.js:336:24Bulk/this.execute@src/mongo/shell/bulk_api.js:1173:1DBCollection.prototype.bulkWrite@src/mongo/shell/crud_api.js:191:20@(shell):1:1> db.log.count();6
数据
冲突
总量
错误
也就是
事例
功能
博客
地方
官方
方式
语法
问题
顺序
无影
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小许股票软件开发
平板电脑服务器尚未就绪怎么办
大庆bim软件开发工程
web靶场网络安全培训
网络安全受到有效
云算力平台软件开发
河南工控软件开发公司
大学生网络安全意识可行性
昆明财务软件开发公司
数据库中间件技术论文
服务器怎么手动备份快照
全光网络技术组成
湖北企业软件开发预算
服务器 双十一
罗布乐思史上最好玩的服务器
苹果软件开发面试经验
共赢软件开发
安全与网络安全图片
淮阳县网络安全宣传
重庆巫溪仓储生鲜软件开发
未来全球网络安全
服务器连接句柄满了怎么办
维护网络安全我们要做到哪几点
哪种方式能关闭数据库
指定数据库asm
软件开发自学可以
网络安全工作 网信办
来网安进行网络安全培训
小说 数据库
帝国神话进不去自定义服务器