Dokumentacja metody aktualizacji MongoDB stwierdza co następuje:
Więc w zasadzie multi
parametr jest tym, co włącza update_all
zachowanie w pytaniu, z którym się łączysz.
W odpowiedzi na twoje drugie pytanie:tak - Mongoid ma teraz wbudowaną tę funkcję. Odniesienie do dokumentacji znajduje się tutaj . Ale możesz go użyć w ten sposób:
User.where(:gender => "Male").update_all(:title => "Mr")
Aktualizacja
W przypadku, gdy chcesz wypchnąć wartość do pola tablicy, nadal będziesz musiał użyć biblioteki MongoDB bezpośrednio, ponieważ Mongoid update_all
metoda obsługuje tylko $set
metoda aktualizacji bazy danych (która może być użyta do aktualizacji całej tablicy, ale nie do wypychania na nią wartości).
Przykład w odpowiedzi na pytanie, do którego się połączyłeś, zadziała. Skopiowałem go poniżej tych, którzy natknęli się na to pytanie (dzięki szingara !):
User.collection.update(
{'$in' => {:gender => 'Male'}},
{'$push' => {:titles => 'Mr'}},
{:multi => true}
)