我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mongodb的Bulk Write 操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mongodb的Bulk Write 操作

本文来自与自己的博客:www.wangerbao.com

Bulk Write Operations操作是mongodb3.2的新增功能,语法如下:

db.collection.bulkWrite(
   [ <operation 1>, <operation 2>, ... ],
   {
      writeConcern : <document>,
      ordered : <boolean>
   }
)

其中ordered是个需要注意的地方,根据官方描述:

  1. 默认是ture,也就是按照顺序插入数据,如果中间出现错误则不会在继续执行

  2. 如果是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@class="lazy" data-src/mongo/shell/bulk_api.js:372:48
    BulkWriteResult/this.toError@class="lazy" data-src/mongo/shell/bulk_api.js:336:24
    Bulk/this.execute@class="lazy" data-src/mongo/shell/bulk_api.js:1173:1
    DBCollection.prototype.bulkWrite@class="lazy" data-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@class="lazy" data-src/mongo/shell/bulk_api.js:372:48
    BulkWriteResult/this.toError@class="lazy" data-src/mongo/shell/bulk_api.js:336:24
    Bulk/this.execute@class="lazy" data-src/mongo/shell/bulk_api.js:1173:1
    DBCollection.prototype.bulkWrite@class="lazy" data-src/mongo/shell/crud_api.js:191:20
    @(shell):1:1
    > db.log.count();
    6


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mongodb的Bulk Write 操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2024-04-02

[MongoDB]mongodb的命令行操作

./mongo1.查看所有数据库show dbs2.切换数据库use 数据库名3.查询所有集合show collections4.查询所有文档db.文档名.find()db.文档名.find().pretty() //格式化显示5.查询一条,并且增加上查询条件
[MongoDB]mongodb的命令行操作
2020-10-06

PHP7操作MongoDB

目录插入数据查询数据更新数据删除数据PHP7里面使用如下库,操作比较复杂PHP7连接MongoDB语法如下://参数规则: mongodb://账号:密码@IP:端口/数据库$manager = new MongoDBDriverManager("mongod
PHP7操作MongoDB
2017-02-17

Python操作Mongodb

一 导入 pymongofrom pymongo import MongoClient二 连接服务器 端口号 27017连接MongoDB连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB
2023-01-31

mongodb的聚合操作

1. 什么是聚合聚合是MongoDB的高级查询语言,它允许我们通过转化合并由多个文档的数据来生成新的在单个文档里不存在的文档信息。MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果,有点类似sql语句中
mongodb的聚合操作
2017-01-24

MongoDB基础操作

MongoDB增删改查操作MongoDB数据库服务启动和关闭net start mongodbnet stop mongodb数据库连接先使用npm install mongoose安装mongoose依赖,之后使用mongoose提供的connect方法即可

	MongoDB基础操作
2017-01-10

编程热搜

目录