bulkWrite探秘

博客 动态
0 295
羽尘
羽尘 2023-06-09 00:10:37
悬赏:0 积分 收藏

bulkWrite探秘

MongoDB有很多有趣的内置方法,其中为了批量处理一些写入操作,并且可以按照一定顺序执行,自从3.2版本之后提供了该批量方法:bulkWrite。

它的语法很简单:


db.collection.bulkWrite(
   [ <operation 1>, <operation 2>, ... ],
   {
      writeConcern : <document>,
      ordered : <boolean>
   }
)

分别解释一下上述参数,
opertion 1, opertion 2:表示写入操作对象,例如插入数据的操作:

{ insertOne: { document: { _id: 3, type: "spider", size: "medium", price: 6 } } },

writeConcern:它表示写入设置,当有多个MongoDB节点(比如三个节点,其中一个primary节点)的时候,我们会定义什么才算是写入成功。从5.0版本之后,默认是{w: ‘majority’},也就是当大多数节点写入完成,则会返回写入结果。比如有三个节点,那么超过一半,也就是2个或者2个以上节点写入成功,则该写入操作才能算成功。

ordered:这个参数为true的时候代表这些写入操作是严格按照顺序串行执行的,也就是先执行operation 1,然后执行operation 2。并且在这个过程中如果有一个操作发生错误,则MongoDB返回结果并不执行剩余的写操作。

当odererd是false,代表这些写操作可以无序地并发执行,当有一个写操作发生错误,则MongoDB会继续执行完其他操作,最后返回错误和异常。

所以可以看出有序方式bulkWrite会比无序方式更慢。

posted @ 2023-06-08 23:53  freephp  阅读(0)  评论(0编辑  收藏  举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员