当我像这样更新MongoDB时:
collection.update(query,data,true,false);
每次我都可以向mongo提交一个更新操作,性能非常糟糕。像这样的操作,是否有批量提交操作?
答案 0 :(得分:2)
我相信MongoDB它被称为批量操作。
您可以执行批量查找&更新操作,查找与查询匹配的所有记录,并相应地更新结果。
的示例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();
答案 1 :(得分:1)
简短的回答是,在“现代司机”中然后就是这样,这就是现代司机发布的意图。
我们在这里讨论的是使用MongoDB 2.6中引入的Bulk Operations API。在介绍时,诸如MongoDB“shell”之类的工具引入了这些方法的使用(即使作为“单一”操作)“引擎盖下”可以这么说,所以那些实际调用服务器版本的方法被认为是通过适当的测试来支持它。
使用MongoDB 3.0.x发布系列,驱动程序已经“彻底改进”,以实现在适当的情况下以类似方式使用这些“批量API”方法的方法。
一般方法是不同的签名,例如.update_one()
或类似的各种情况。此外,这些通常从“不同类别”到先前驱动程序版本中存在的“遗留”实现进行观察。
因此,现代和“不断发展”的考虑是默认情况下将这些方法用于适用的新方法。但也要在方法之间“区分”,以免在可能的情况下导致向后兼容性中断。
您可以在驱动程序版本和服务器兼容性允许的情况下明确使用“批量”方法,也可以在更现代的驱动程序中使用“新”方法,这与您安装的内容相适应。