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中的相同集合。
是否有阻止并发更新的锁定?
答案 0 :(得分:1)
假设您正在使用MongoDB版本> = 3.0 和 WiredTiger Storage Engine(这是MongoDB版本的默认存储引擎> = 3.2),{{3使用控件。
因此,在您的示例中使用WiredTiger,您的更新可以同时运行。如果两个线程或进程碰巧尝试同时更新同一文档,MongoDB将检测写冲突并透明地重试。
有关详细信息,请参阅Document Level Concurrency。