mongodb批量更新中的并发写入

mongodb批量更新中的并发写入,mongodb,concurrency,bulkupdate,Mongodb,Concurrency,Bulkupdate,mongodb在执行批量更新时是否锁定数据库? 我正在使用mongo批量操作 var bulk=db.items.initializeUnderedBulkop(); bulk.find({status:“D”}).updateOne({$set:{status:“I”,points:“0”}); bulk.find({status:“A”}).updateOne({$set:{status:“B”,points:“0”}); bulk.execute() 假设此操作有100个find和upda

mongodb在执行批量更新时是否锁定数据库? 我正在使用mongo批量操作

var bulk=db.items.initializeUnderedBulkop();
bulk.find({status:“D”}).updateOne({$set:{status:“I”,points:“0”});
bulk.find({status:“A”}).updateOne({$set:{status:“B”,points:“0”});
bulk.execute()

假设此操作有100个find和update,并且正在运行另一个进程,该进程也在尝试更新数据库中的相同集合


它有防止并发更新的锁吗?

假设您使用的是MongoDB版本>=3.0和(是MongoDB版本>=3.2的默认存储引擎),则使用控件

因此,在您的示例中使用WiredTiger,您的更新可以同时运行。如果两个线程或进程同时尝试更新同一文档,MongoDB将检测写入冲突并透明地重试


有关详细信息,请参阅。

是。我理解,当使用“db.collection.update()”更新集合时,mongo使用锁。我特别询问,我是否使用bulk.initializeUnderedBulkop更新集合。它会用锁吗?是的。我使用的是mongo 3.2批量更新在锁定/并发方面没有什么不同。