赞
踩
批处理: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条,大概分为两组执行。
批处理分为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()支持查看批处理详情。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。