当前位置:   article > 正文

mongodb 关于批量操作_mongodb batch operation only supports one operatio

mongodb batch operation only supports one operation type
 
 
批处理:

mongodb在3.2.0之后

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

常用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:<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()支持查看批处理详情。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/735502
推荐阅读
相关标签
  

闽ICP备14008679号