我正在遍歷集合(運行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