返回顶部
首页 > 资讯 > 数据库 >Mongodb的Bulk Write 操作
  • 845
分享到

Mongodb的Bulk Write 操作

2024-04-02 19:04:59 845人浏览 独家记忆
摘要

本文来自与自己的博客: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是个需要注意的地方,根据官方描述:

  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@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

猜你喜欢
  • Mongodb的Bulk Write 操作
    本文来自与自己的博客:www.wangerbao.comBulk Write Operations操作是mongodb3.2的新增功能,语法如下:db.collection.bulkWrite(  ...
    99+
    2024-04-02
  • MongoDB操作
    #=========2、mongo===================================#备份数据库mongodump -h 127.0.0.1 -d eb_mongo -o /root/x...
    99+
    2024-04-02
  • mongodb的写操作
    使用插入数据命令: >insert 需要注意的是,如果插入一文件(现在理解,nosql 类型的db数据不能说是记录了,它是已文件作为单位,而传统型的关系型数据库,我们说是插入一条记录),如果没有带人_...
    99+
    2024-04-02
  • [MongoDB]mongodb的命令行操作
    ./mongo1.查看所有数据库show dbs2.切换数据库use 数据库名3.查询所有集合show collections4.查询所有文档db.文档名.find()db.文档名.find().pretty() //格式化显示5...
    99+
    2020-10-06
    [MongoDB]mongodb的命令行操作
  • PHP7操作MongoDB
    目录插入数据查询数据更新数据删除数据 PHP7里面使用如下库,操作比较复杂 PHP7连接MongoDB语法如下: //参数规则: mongodb://账号:密码@IP:端口/数据库 $manager = new MongoDBD...
    99+
    2017-02-17
    PHP7操作MongoDB
  • C# 操作MongoDB
    1 安装MongoDB.Driver2 建立数据库连接 #mongodb://127.0.0.1:27017 MongoClient client = new MongoClient(“连接字符串”); ...
    99+
    2024-04-02
  • Python操作Mongodb
    一 导入 pymongo from pymongo import MongoClient 二 连接服务器 端口号 27017 连接MongoDB连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入Mong...
    99+
    2023-01-31
    操作 Python Mongodb
  • mongodb的聚合操作
    1. 什么是聚合 聚合是MongoDB的高级查询语言,它允许我们通过转化合并由多个文档的数据来生成新的在单个文档里不存在的文档信息。MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果...
    99+
    2017-01-24
    mongodb的聚合操作 数据库入门 数据库基础教程 数据库 mysql
  • mongodb的CURD操作详解
    基本操作增删改查增: insert介绍: mongodb存储的是文档,. 文档是json格式的对象. 语法: db.collectionName.isnert(document); 1: 增加单篇文档Db....
    99+
    2024-04-02
  • MongoDB基础操作
    MongoDB增删改查操作 MongoDB数据库服务启动和关闭 net start mongodb net stop mongodb 数据库连接 先使用npm install mongoose安装mongoose依赖,之后使用mongoo...
    99+
    2017-01-10
    MongoDB基础操作 数据库入门 数据库基础教程 数据库 mysql
  • mongodb简单操作
    1、执行mongod.exe 服务器启动  后面可跟参数说明启动的数据库和日志。eg:mongod.exe --bind_ip 127.0.0.1 --logpath...
    99+
    2024-04-02
  • [MongoDB] 基本操作
    ...
    99+
    2024-04-02
  • MongoDB 常用操作
    MongoDB常用操作 ...
    99+
    2024-04-02
  • mongoDB基本操作
    MongdoDB实例—》数据库—》集合—》文档—》字段(key/value pair)bin 执行./mongod     启动  &后台启动./m...
    99+
    2024-04-02
  • mongodb CRUD操作 -Select
    https://docs.mongodb.com/manual/reference/method/db.collection.find/ 查询文档db.collection.find(query, proj...
    99+
    2024-04-02
  • MongoDB常用操作
    关系型数据库名词与MongoDB对比:关系数据库 MongoDB Database  DatabaseTable CollectionRow Do...
    99+
    2024-04-02
  • Linux文件写入操作:write函数的使用
    write函数定义:write函数是基于Linux系统中的一项函数调用,主要用于在打开/创建的文件中写入数据。 write函数包含的头文件: #include write函数的格式原型: ssize_t write(int fd, con...
    99+
    2023-09-20
    linux 运维 服务器
  • Mongodb的安装与CRUD操作
    What is Mongodb                Mongo ...
    99+
    2024-04-02
  • mongodb的基本操作命令
    === mongodb的基本操作命令================= DDL操作=========================================================...
    99+
    2024-04-02
  • mongodb的增删改查操作
    这篇文章运用了实例代码展示mongodb的增删改查操作,代码非常详细,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。增: insert介绍: mongodb存储的是文档,. 文档是json格式的对象.语...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作