MongoDB 4.2 bulkWrite 批量写操作

本文介绍 MongoDB 中批量写操作,详细内容参考 bulkWrite

db.collection.bulkWrite()

    db.collection.bulkWrite(),方法传入一个写操作的数组,然后执行里面的每一个写操作,默认按顺序执行。支持的写操作包含:insertOne,updateOne,updateMany,deleteOne,deleteMany,replaceOne。
语法

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

ordered

    The ordered parameter specifies whether bulkWrite() will execute operations in order or not. By default, operations are executed in order.ordered 参数表示 bulkWrite() 是否按照顺序执行写操作,默认情况下 ordered 为 true。

  • 顺序执行示例,MongoDB 按顺序执行写操作,如果其中有写操作出现异常,将直接返回,不处理剩余的写操作。
db.collection.bulkWrite(
   [
      { insertOne : <document> },
      { updateOne : <document> },
      { updateMany : <document> },
      { replaceOne : <document> },
      { deleteOne : <document> },
      { deleteMany : <document> }
   ]
)
  • 无序执行示例。
db.collection.bulkWrite(
   [
      { insertOne : <document> },
      { updateOne : <document> },
      { updateMany : <document> },
      { replaceOne : <document> },
      { deleteOne : <document> },
      { deleteMany : <document> }
   ],
   { ordered : false }
)

    如果 ordered 设置为 false,上面示例执行的结果可能会千差万别。举个例子,deleteMany 在 insertOne 前面执行和后面执行最终的结果是完全不一样的。
    批量操作的数量不能超过数据库的 maxWriteBatchSize,MongoDB 3.6版本中这个数字是 100000。

示例

insertOne

db.collection.bulkWrite( [
   { insertOne : { "document" : <document> } }
] )

updateOne

db.collection.bulkWrite( [
   { updateOne :
      {
         "filter": <document>,
         "update": <document or pipeline>,            // Changed in 4.2
         "upsert": <boolean>,
         "collation": <document>,                     // Available starting in 3.4
         "arrayFilters": [ <filterdocument1>, ... ],  // Available starting in 3.6
         "hint": <document|string>                    // Available starting in 4.2.1
      }
   }
] )

updateMany

db.collection.bulkWrite( [
   { updateMany :
      {
         "filter" : <document>,
         "update" : <document or pipeline>,          // Changed in MongoDB 4.2
         "upsert" : <boolean>,
         "collation": <document>,                    // Available starting in 3.4
         "arrayFilters": [ <filterdocument1>, ... ], // Available starting in 3.6
         "hint": <document|string>                   // Available starting in 4.2.1
      }
   }
] )

replaceOne

db.collection.bulkWrite([
   { replaceOne :
      {
         "filter" : <document>,
         "replacement" : <document>,
         "upsert" : <boolean>,
         "collation": <document>,                    // Available starting in 3.4
         "hint": <document|string>                   // Available starting in 4.2.1
      }
   }
] )

deleteOne

db.collection.bulkWrite([
   { deleteOne : {
      "filter" : <document>,
      "collation" : <document>                   // Available starting in 3.4
   } }
] )

deleteMany

db.collection.bulkWrite([
   { deleteMany: {
      "filter" : <document>,
      "collation" : <document>                    // Available starting in 3.4
   } }
] )
发布了6 篇原创文章 · 获赞 0 · 访问量 88

猜你喜欢

转载自blog.csdn.net/baidu_33722511/article/details/105683784
4.2
今日推荐