个人博客
个人公众号,求关注,文章如有不明,请指出。
文章概叙
本文讲的是关于bulkwrite的用法,依旧是在shell下使用。
关于批量操作
Performs multiple write operations with controls for order of
execution.
官网上这句话关于批量操作的介绍,简单明了。翻译过来就是:使用控制执行顺序的控件执行多个写入操作。
bulkWrite
批量操作的api只有一个,就是使用bulkWrite。
bulkwrite并非一次只能操作一种类型,而是可以同时操作多种类型的数据。比如在一次sql中,既可以批量修改,又可以批量增加。
举个例子,使用bulkwrite操作写入两条数据
javascript
db.test.bulkWrite([
{
insertMany: [{
string: "a"
}, {
string: "b"
}]
}
])
细心的朋友看到我这儿是insertMany,但是官网中并没有insertMany的实例,因此我个人推荐使用updateMany,然后将upsert更改为true。
如果同时操作多个,比如前面所提及的更新与插入在同一个sql中操作,则应使用如下语法。
javascript
db.test.bulkWrite([
{
insertOne: {
string: "a"
}
},
{
updateOne: {
"filter": {
"string": 'b'
},
"update": {
"$set": {
string: 'c'
}
},
upsert: true
}
}
])
上面的sql的意思是:增加一条a的记录,将db中为b的记录更改为c,如果没有则增加一条©的记录。
效果如下:
其中,可以看到我们的使用upsert的那条记录。并不归属于insertedcount中,而是归属于uosertedcount中,所以需要注意下这个。
bulkwrite支持的方法如下,每个具体的方法之前的博客都有讲解过,这儿就不再具体描述了 。
无序插入
之前的博客讲解过关于无序插入的,这儿不再讲解了。详情请看
整理mongodb文档(一):增
最后的点
关于分片集群的批量操作,后续关于集群博客的时候再讲解。