Tài liệu về phương pháp cập nhật MongoDB nêu những điều sau:
Về cơ bản, multi
là thông số kích hoạt update_all
hành vi trong câu hỏi mà bạn đã liên kết.
Trả lời cho câu hỏi thứ hai của bạn:có - Mongoid đã tích hợp sẵn tính năng này. Tài liệu tham khảo có tại tại đây . Nhưng bạn có thể sử dụng nó như thế này:
User.where(:gender => "Male").update_all(:title => "Mr")
Cập nhật
Trong trường hợp bạn muốn đẩy một giá trị vào một trường mảng, bạn vẫn cần sử dụng trực tiếp thư viện MongoDB, vì Mongoid update_all
phương thức chỉ hỗ trợ $set
phương pháp cập nhật cơ sở dữ liệu (có thể được sử dụng để cập nhật toàn bộ mảng, nhưng không đẩy giá trị lên đó).
Ví dụ trong câu trả lời cho câu hỏi bạn đã liên kết sẽ hoạt động, tôi đã sao chép nó bên dưới những người tình cờ gặp câu hỏi này (cảm ơn shingara !):
User.collection.update(
{'$in' => {:gender => 'Male'}},
{'$push' => {:titles => 'Mr'}},
{:multi => true}
)