【发布时间】:2014-04-08 09:18:18
【问题描述】:
我有一个这样的哈希数组:
[
{
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 执行批量更新而无需先获取它们?
【问题讨论】:
-
不,重点是我知道我要更新的所有文档的
id,而且我需要更新多个文档,所以我想找到一种方法来传递数据并拥有它作为一项高效的事务执行,而不是一次按顺序获取和更新一个文档。 -
这不是重复的有什么原因吗?您似乎是在说您已经知道要插入的所有数据。 stackoverflow.com/questions/3772378/…
-
其实不是你在谈论更新
-
不是一个真正的答案,但等待 2.6 版本:docs.mongodb.org/master/reference/command/update/#dbcmd.update