我们已经介绍过MongoDB中文档的增删改查等操作,但在有一些场景下,我们想同时完成插入、删除、更新等操作,显然是没有办法实现的。但是MongoDB给我们提供了这样的方式,可以使用db.collection.bulkWrite()方法实现批量插入、更新和删除操作。

下面我们来了解一下批量写操作的语法:

db.collection.bulkWrite([ <operation 1>, <operation 2>, ... ], options)

其中,

collection:指的是集合名称

operation:指的是操作,目前支持的操作有:insertOne, updateOne, updateMany, replaceOne, deleteOne, deleteMany。

options:选填,指的是其他一些选项。

        ordered 选项: 默认为true:批量操作中某个操作执行失败,后面的操作将不再执行。

                false:批量操作中某个操作执行失败,后面的操作仍然执行。

【注意】ordered并不能保证事务完整性,批量操作并不能保证事务完整性。

示例:

我们准备一下初始化文档:

db.test.insertMany([{ "_id" : "1001", "name" : "张三", "fruits" : [ "apple", "orange" ] },{ "_id" : "1002", "name" : "李四", "fruits" : [ "banana", "apple" ] },{ "_id" : "1003", "name" : "王五", "fruits" : [ "banana", "apple", "orange" ] }]
);

下面我们插入两条数据,更新一条数据,删除一条数据,替换一条数据:

db.test.bulkWrite([{ insertOne: { document: { "_id" : "1004", "name" : "1004", "fruits" : [ "apple" ],"add_comment" : "我是新增加的"}}},{   insertOne: { document: { "_id" : "1005", "name" : "1005", "fruits" : [ "orange" ],"add_comment" : "我是新增加的"}},},{updateMany: {filter: { "fruits": "apple" },update: { $set: { "update_comment": "I has apple" } }}},{deleteOne: {filter: { "name": "张三"}}},{replaceOne: {filter: { "name": "李四" },replacement: { "replace_commet": "我被替换掉了" }}}
], { ordered: false })

执行完成后,查询文档:

{ "_id" : "1002", "replace_commet" : "我被替换掉了" }
{ "_id" : "1003", "name" : "王五", "fruits" : [ "banana", "apple", "orange" ], "update_comment" : "I has apple" }
{ "_id" : "1004", "name" : "1004", "fruits" : [ "apple" ], "add_comment" : "我是新增加的", "update_comment" : "I has apple" }
{ "_id" : "1005", "name" : "1005", "fruits" : [ "orange" ], "add_comment" : "我是新增加的" }

(1)编号为1004,1005的插入到了文档中

(2)编号为1003,1004的文档被更新了,说明批量写入操作时新插入的数据只要满足后面的操作也会被执行

(3)编号为1001的数据被删除

(4)编号为1002的数据被替换

MongoDB 批量写操作相关推荐

  1. oraclesqldeveloper 批量插入多个存储过程_MongoDB如何批量执行写操作

    MongoDB Manual (Version 4.2)> MongoDB CRUD Operations > Bulk Write Operations No 1 总览 MongoDB使 ...

  2. mongodb文档操作1

    mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...

  3. 第6篇: ElasticSearch写操作—原理及近实时性分析(完整版)

    背景:目前国内有大量的公司都在使用 Elasticsearch,包括阿里.京东.滴滴.今日头条.小米.vivo等诸多知名公司.除了搜索功能之外,Elasticsearch还结合Kibana.Logst ...

  4. Python Mongodb 查询以及批量写、批量查

    查询 查询包含XXX db.newcaruserinfo.find({'UserName':{"$regex": "\\*"}}) \\转义 简单的聚合查询: ...

  5. mongodb mysql 写_MongoDB与MySQL关于写确认的异同

    云妹导读: 所谓写确认,是指用户将数据写入数据库之后,数据库告知用户写入成功的一个概念.根据数据库的特点和配置,可以在不同的写入程度上,返回给用户,而这其中,就涉及到了不同的性能.数据安全等级以及数据 ...

  6. php mongodb 批量插入,MongoDB不支持批量插入

    mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value.value.value...)那样的语法,也不支持transac ...

  7. MongoDB Java API操作很全的整理以及共享分片模式下的常见操作整理

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...

  8. mongodb的聚合操作

    mongodb的聚合操作 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功 ...

  9. MongoDB:详细解释mongodb的高级操作,聚合和游标

    前几天总结了mongodb的安装入门.详细解释了增删改查的基本操作,今天再来总结下mongodb更高级的操作,聚合和游标. 一.聚合,mongodb的聚合操作一般分为四种情景,分别是:count.di ...

最新文章

  1. Postgresql相关数据库、表占用磁盘大小统计
  2. 【Linux】 Samba 服务器安装配置实现与Windows系统的文件共享服务
  3. MySQL主从同步机制及同步中的问题处理
  4. CImageList上的位图, CTabCtrl 还是用ICON好!
  5. HDU - 5692 Snacks(dfs序+线段树)
  6. ubuntu19.10 安装搜狗输入法
  7. 博客目录(python相关)
  8. strace命令_在软件部署中使用 strace 进行调试
  9. GC:垃圾回收机制及算法
  10. (16)FPGA面试技能提升篇(Python)
  11. 主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换
  12. python123 测验三_作业要求 20190919-3 效能分析
  13. form表单提交大量input,php接收不全
  14. Ubuntu 修改IP地址
  15. HTML5基础基础练习题
  16. 数据库并发抢红包_微信高并发抢红包秒杀实战案例
  17. UICC,USIM卡与SIM的区别
  18. keep-alive的作用是什么? 使用它的目的是什么?
  19. javascript 动态设置样式style
  20. 互联网医院系统开启全民“云诊疗”时代,打造更智慧的医疗服务

热门文章

  1. 倒闭浪潮下,自身痛点难消的一起装修网要如何破浪?
  2. 基于java会议管理系统设计(含源文件)
  3. 隐形眼镜会影响角膜,戴过的人还能做近视手术么?
  4. 2022年淘宝618跨店满减是多少? 天猫618跨店满减规则
  5. 网页简单僵尸射击游戏开发1——游戏概述和html语言
  6. 腾讯云轻量数据库LighthouseDB使用心得
  7. 2021未来杯区块链应用创新大赛正式启动!
  8. Cocos2dx使用ios内支付IAP详细流程-白白
  9. 本地rdm连接服务器redis
  10. Python + Paramiko实现sftp文件上传下载