Je suis en train d'effectuer une itération sur une collection (en exécutant Moped comme pilote Ruby) mais comment mettre à jour un champ pour chaque document?itération d'une collection dans MongoDB pour les mises à jour
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))}
Cela ne met pas à jour le champ "âge", tandis qu'un
simple,irb> users.find.each {|u| users.find(_id: u["_id"]).update(age: rand(18..80))}
fait. Mais il ne semble pas très efficace d'itérer sur une collection et de rechercher l'identifiant dans chaque itération. Alors, comment pourrais-je simplifier cela? J'ai besoin d'un moyen rapide pour mettre à jour des millions de documents de cette façon.
Cordialement, Chris
'users.find.update_all (: $ set => {âge: rand (18..80)}})'? – WiredPrairie
@WiredPrairie qui définirait tous les documents au même âge (choisi au hasard). – Leopd
@Leopd - true. Je me concentrais sur l'obtention de la syntaxe pour être efficace et tout en un appel. :) – WiredPrairie