mongodb 关于批量操作

 
  
批处理:

mongodb在3.2.0之后

文档提供db.collection.bulkWrite() ,通过给定的语法和参数进行批量执行
db.collection.bulkWrite( [ , , ... ], { writeConcern : , ordered : } )

常用operation:insertOne,updateOne,updateMany,deleteOne,deleteMany,replaceOne.

需要注意的是,批处理的操作没有insert,update和delete的选项

具体用法如下:

       1.批量插入:db.collection.bulkWrite([{insertOne:{document:{field1:"value1"}}}]).

       2.批量更新:db.collection.bulkWrite([{updateOne:{filter:{field:"value1"},update:{field:"value2"},upsert:true}}])        updateMany等同用法

       3.批量覆盖:db.collection.bulkWrite([{replaceOne:{filter:{field:"value1"},replacement:{field:"value2"},upsert:true}}])  根据_id覆盖

       4.批量删除:db.collection.bulkWrite([{deleteMany:{filtert:{field1:"value1"}}}]).

所有的插入都是执行的顺序插入,但是一般性作为应用功能的插入顺序不应该交托给数据库进行执行,所以为了提高性能,尽量加上ordered:true的参数

批量操作支持混合执行,即为:

                           db.collection.bulkWrite([{insertOne:{document:},

                                                                 {updateOne:{filter:{field:"value1"},update:{field:"value2"},upsert:true}},

                                                                 {replaceOne:{filter:{field:"value1"},replacement:{field:"value2"},upsert:true}}

                                                                 ..........

                                                                }])

 批量操作每批做多拥有1000条文档,如果说一共批量执行1500条,大概分为两组执行。

mongodb 2.6之后

批处理分为3个步骤

       1.初始化批处理的操作,方法:

                    既定插入顺序var bulk=db.collection.initializeOrderedBulkOp(); 或者 不按顺序插入var bulk=db.collection.initializeUnOrderedBulkOp();

       2. 定义批处理的操作:

                  bulk.find().collation();3.4.0出现,根据不同语言进行比较

                  bulk.insert();

                  bulk.find().remove();

                  bulk.find().removeOne();

                  bulk.find().update();

                  bulk.find().updateOne();

                  bulk.find().replaceOne();

                  bulk.find().upsert();

        3.执行批量处理:

                  bulk.execute();

bulk.tojson() 和bulk.toString()支持查看批处理详情。


你可能感兴趣的:(mongodb)