Mongodb的Bulk Write 操作
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,本文来自与自己的博客:www.wangerbao.comBulk Write Operations操作是mongodb3.2的新增功能,语法如下:db.collection.bulkWrite(
千家信息网最后更新 2025年01月25日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();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: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();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: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安全错误
数据库的锁怎样保障安全
网络安全共建主题班会
外企软件开发公司好吗
数据库搜素最近50条信息
emby自己怎么建服务器
虹口区网络安全口碑推荐
网络安全手机抄报
30岁学嵌入式软件开发晚吗
客户端和服务器不在同一个网络
CD下载软件开发
网络安全常态化特色项目
内网穿透爆破服务器
金税盘服务器设置
触摸屏桌面软件开发
病毒基因序列对比用什么数据库
通过输入内容添加数据库
神经网络技术控制原理
网络安全快一步短视频
国泰安数据库有银行的吗
即墨区微信公众号软件开发公司
e740服务器
数据库技术讲解视频
软件开发好了卖出去会亏吗
数据库怎样定义视图列名
db2数据库copy
权限设计模块的数据库表设计
网络安全重于泰山活动内容
2018年 网络安全周
怎么搭建安全的服务器
网络安全销售经验分享
软件开发需要学乱码吗