mongodb 关于批量操作

 
 
批处理:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值