La documentation de la Méthode de mise à jour MongoDB indique ce qui suit :
Donc, fondamentalement, le multi
paramètre est ce qui active le update_all
comportement dans la question à laquelle vous avez lié.
En réponse à votre deuxième question :oui - Mongoid a cette fonctionnalité intégrée maintenant. La référence de la documentation est ici . Mais vous pouvez l'utiliser comme ceci :
User.where(:gender => "Male").update_all(:title => "Mr")
Mettre à jour
Dans le cas où vous souhaitez pousser une valeur sur un champ de tableau, vous devrez toujours utiliser directement la bibliothèque MongoDB, car le Mongoid update_all
la méthode ne prend en charge que le $set
méthode de mise à jour de la base de données (qui peut être utilisée pour mettre à jour un tableau entier, mais pas pour y insérer des valeurs).
L'exemple dans la réponse à la question à laquelle vous avez lié fonctionnerait, je l'ai copié ci-dessous ceux qui tombent sur cette question (merci shingara !):
User.collection.update(
{'$in' => {:gender => 'Male'}},
{'$push' => {:titles => 'Mr'}},
{:multi => true}
)