我正在遍历集合(运行Moped作为Ruby驱动程序),但如何为每个文档更新一个字段?在MongoDB中迭代集合以获取更新
irb> session = Moped::Session.new(["127.0.0.1:27017"])
irb> session.use :demoapp
irb> users = session[:users]
irb> users.find.each {|u| u.update(age: rand(18..80))}
这不更新域 “年龄”,而一个简单的
irb> users.find.each {|u| users.find(_id: u["_id"]).update(age: rand(18..80))}
一样。但是迭代一个集合似乎并不是非常有效,然后在每次迭代中查找id。那么我怎么能简化它呢?我需要一些快速的方法来以这种方式更新数百万个文档。
的问候, 克里斯
'users.find.update_all(:$ set => {age:rand(18..80)}})'? – WiredPrairie
@WiredPrairie会将所有文档设置为相同(随机选择)的年龄。 – Leopd
@Leopd - true。我专注于让语法高效并且一次调用。 :) – WiredPrairie