并发写mongodb批量更新

时间:2017-05-17 05:31:16

标签: mongodb concurrency bulkupdate

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

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

假设此操作有100个查找和更新,并且还有另一个正在运行的进程正在尝试更新db中的相同集合。

是否有阻止并发更新的锁定?

1 个答案:

答案 0 :(得分:1)

假设您正在使用MongoDB版本> = 3.0 WiredTiger Storage Engine(这是MongoDB版本的默认存储引擎> = 3.2),{{3使用控件。

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

有关详细信息,请参阅Document Level Concurrency