mongoid обновить все документы с условиями - PullRequest
15 голосов
/ 05 апреля 2011

У меня есть модель

class Employee
  include Mongoid::Document
  field :first_name
  field :last_name
  field :address1
  field :address2
  field :salary
end

Теперь мне нужно обновить зарплату всего сотрудника до 10000 с адресом1 «Калгари»

Теперь я попробовал этот запрос

Employee.update_all "salary = 10000", "address1 = 'Calgary'"

Но этот запрос дал мне ошибку как:

NoMethodError: undefined method `update_all' for Employee:Class

Спасибо

Ответы [ 3 ]

39 голосов
/ 05 апреля 2011

Вы должны попытаться обновить ваш MongoID до последней версии.Mongoid 2.0 был выпущен некоторое время назад.Я предполагаю, что update_all, destroy_all и delete_all были введены в одном из rc.

После обновления должно работать следующее

Employee.where(:address1 => 'Calgary').update_all(:salary => 10000)
0 голосов
/ 05 сентября 2013

Более современный способ сделать это, используя Moped (базовый драйвер):

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

Странный запрос Кстати: P

0 голосов
/ 19 января 2012

Согласно этому http://groups.google.com/group/mongoid/browse_thread/thread/ac08564d5a38da13?pli=1

и быстрый Model.respond_to? (: Update_all) выводит true, предполагает, что Model.update_all в порядке

...