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)

Ответ 3

Я нашел этот хороший ответ, поскольку mongoid не разрешает пакетные обновления

Ответ 4

Более современный способ сделать это с помощью Moped (основного драйвера)

Employee.collection.
  find({address1: 'Calgary'}).
  update_all({salary: 10000 })

странный запрос btw: P