Dokumentasi untuk metode pembaruan MongoDB menyatakan sebagai berikut:
Jadi pada dasarnya multi
parameter inilah yang mengaktifkan update_all
perilaku dalam pertanyaan yang Anda tautkan.
Untuk menjawab pertanyaan kedua Anda:ya - Mongoid memiliki fitur ini di dalamnya sekarang. Referensi dokumentasi di sini . Tapi Anda bisa menggunakannya seperti ini:
User.where(:gender => "Male").update_all(:title => "Mr")
Perbarui
Dalam kasus di mana Anda ingin mendorong nilai ke bidang array, Anda masih perlu menggunakan perpustakaan MongoDB secara langsung, karena update_all
Mongoid metode hanya mendukung $set
metode pembaruan basis data (yang dapat digunakan untuk memperbarui seluruh larik, tetapi tidak mendorong nilai ke dalamnya).
Contoh dalam jawaban atas pertanyaan yang Anda tautkan akan berfungsi, saya telah menyalinnya di bawah mereka yang menemukan pertanyaan ini (terima kasih shingara !):
User.collection.update(
{'$in' => {:gender => 'Male'}},
{'$push' => {:titles => 'Mr'}},
{:multi => true}
)