MongoDB 批量写操作
我们已经介绍过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 批量写操作相关推荐
- oraclesqldeveloper 批量插入多个存储过程_MongoDB如何批量执行写操作
MongoDB Manual (Version 4.2)> MongoDB CRUD Operations > Bulk Write Operations No 1 总览 MongoDB使 ...
- mongodb文档操作1
mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...
- 第6篇: ElasticSearch写操作—原理及近实时性分析(完整版)
背景:目前国内有大量的公司都在使用 Elasticsearch,包括阿里.京东.滴滴.今日头条.小米.vivo等诸多知名公司.除了搜索功能之外,Elasticsearch还结合Kibana.Logst ...
- Python Mongodb 查询以及批量写、批量查
查询 查询包含XXX db.newcaruserinfo.find({'UserName':{"$regex": "\\*"}}) \\转义 简单的聚合查询: ...
- mongodb mysql 写_MongoDB与MySQL关于写确认的异同
云妹导读: 所谓写确认,是指用户将数据写入数据库之后,数据库告知用户写入成功的一个概念.根据数据库的特点和配置,可以在不同的写入程度上,返回给用户,而这其中,就涉及到了不同的性能.数据安全等级以及数据 ...
- php mongodb 批量插入,MongoDB不支持批量插入
mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value.value.value...)那样的语法,也不支持transac ...
- MongoDB Java API操作很全的整理以及共享分片模式下的常见操作整理
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...
- mongodb的聚合操作
mongodb的聚合操作 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功 ...
- MongoDB:详细解释mongodb的高级操作,聚合和游标
前几天总结了mongodb的安装入门.详细解释了增删改查的基本操作,今天再来总结下mongodb更高级的操作,聚合和游标. 一.聚合,mongodb的聚合操作一般分为四种情景,分别是:count.di ...
最新文章
- Postgresql相关数据库、表占用磁盘大小统计
- 【Linux】 Samba 服务器安装配置实现与Windows系统的文件共享服务
- MySQL主从同步机制及同步中的问题处理
- CImageList上的位图, CTabCtrl 还是用ICON好!
- HDU - 5692 Snacks(dfs序+线段树)
- ubuntu19.10 安装搜狗输入法
- 博客目录(python相关)
- strace命令_在软件部署中使用 strace 进行调试
- GC:垃圾回收机制及算法
- (16)FPGA面试技能提升篇(Python)
- 主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换
- python123 测验三_作业要求 20190919-3 效能分析
- form表单提交大量input,php接收不全
- Ubuntu 修改IP地址
- HTML5基础基础练习题
- 数据库并发抢红包_微信高并发抢红包秒杀实战案例
- UICC,USIM卡与SIM的区别
- keep-alive的作用是什么? 使用它的目的是什么?
- javascript 动态设置样式style
- 互联网医院系统开启全民“云诊疗”时代,打造更智慧的医疗服务