我有一系列像这样的哈希:
[
{
id: 123,
color: 'red'
},
{
id: 456,
color: 'green'
}
]
我知道如何一次获取和更新一个:
params[:my_documents].each do |doc|
MyDocument.find(doc[:id]).update_attributes(color: doc[:color])
end
...但我怀疑表现不是很好。我想找到一种方法,我可以直接将数据传递给Mongoid / MongoDB,这样我就可以更新每个文档,而无需查找和实例化每个文档,以便更新几个字段。
如何使用Mongoid执行批量更新而无需先获取它们?
答案 0 :(得分:1)
mongo-ruby-driver 1.10版(gem'mongo','〜> 1.10.0')支持批量写入操作。对于您的示例,当与2.6 MongoDB服务器一起使用时,可以将一批更新作为一个请求提交,以获得显着的性能提升。
https://github.com/mongodb/mongo-ruby-driver/wiki/Bulk-Write-Operations
Mongoid尚未提供批量写入操作,但计划在未来版本中基于新版本的“mongo”Ruby驱动程序。