Mongoid обновить все документы с условиями
У меня есть модель
class Employee
include Mongoid::Document
field :first_name
field :last_name
field :address1
field :address2
field :salary
end
Теперь мне нужно обновить всю зарплату Employee до 10000, чей адрес1 является "Калгари"
Теперь я попробовал этот запрос
Employee.update_all "salary = 10000", "address1 = 'Calgary'"
Но этот запрос дал мне ошибку как:
NoMethodError: undefined method `update_all' for Employee:Class
Спасибо
Ответы
Ответ 1
Вам следует попытаться обновить свой MongoID до последней версии. Mongoid 2.0 был выпущен когда-то назад. Я предполагаю, что update_all, destroy_all и delete_all появились в одном из rc.
После обновления, следующая работа должна работать
Employee.where(:address1 => 'Calgary').update_all(:salary => 10000)
Ответ 2
В соответствии с этим http://groups.google.com/group/mongoid/browse_thread/thread/ac08564d5a38da13?pli=1
а быстрый Model.respond_to? (: update_all) выводит true, предполагает, что Model.update_all отлично работает
Ответ 3
Я нашел этот хороший ответ, поскольку mongoid не разрешает пакетные обновления
Ответ 4
Более современный способ сделать это с помощью Moped (основного драйвера)
Employee.collection.
find({address1: 'Calgary'}).
update_all({salary: 10000 })
странный запрос btw: P