我们已经介绍过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" : "王五","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","orange" ],"update_comment" : "I has apple" }
{ "_id" : "1004","add_comment" : "我是新增加的","update_comment" : "I has apple" }
{ "_id" : "1005","add_comment" : "我是新增加的" }
(1)编号为1004,1005的插入到了文档中
(2)编号为1003,1004的文档被更新了,说明批量写入操作时新插入的数据只要满足后面的操作也会被执行。
(3)编号为1001的数据被删除
(4)编号为1002的数据被替换
原文地址:https://blog.csdn.net/m1729339749/article/details/130020958
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。