MongoDB更新操作是否支持批量提交?

Does MongoDB update operation support the batch commit?

当我像这样更新 MongoDB 时:

    collection.update(query,data,true,false);

每次我只能提交一个更新操作到mongo,性能很差。比如这个操作,有没有批量提交操作?

我相信 MongoDB 它被称为批量操作。

您可以执行批量查找和更新操作,查找与查询匹配的所有记录并相应地更新结果。

这是来自 MongoDB's documentation

的示例
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } );
bulk.find( { item: null } ).update( { $set: { item: "TBD" } } );
bulk.execute();

简短的回答是 "modern drivers" 是的,这是现代驱动程序版本的意图。

这里说的是MongoDB 2.6中引入的Bulk Operations API的用法。在介绍时,MongoDB "shell" 等工具介绍了这些方法的用法(甚至作为 "singular" 操作) "under the hood" 可以这么说,所以这些方法实际上在哪里在服务器版本被认为通过适当的测试支持它的地方调用。

在 MongoDB 3.0.x 发布系列中,驱动程序已 "overhauled" 实现在类似的适当位置使用这些 "Bulk API" 方法的方法方式。

一般的做法是不同的签名,比如.update_one()或者类似的各种情况。这些也经常从 "different classes" 到 "legacy" 以前驱动程序版本中存在的实现中观察到。

因此现代 "evolving" 的考虑是在适用的新方法中默认使用这些方法。但也要 "distinguish" 方法之间,以免在可能的情况下导致向后兼容性中断。

您可以在驱动程序版本和服务器兼容性都允许的情况下明确使用 "Bulk" 方法,或者在更现代的驱动程序中使用 "new" 方法,这取决于您所拥有的已安装。