mongoid update all documents with conditions

Gagan picture Gagan · Apr 5, 2011 · Viewed 13.5k times · Source

I have a model

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

Now I need to update all Employee's salary to 10000 whose address1 is "Calgary"

Now I tried this query

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

But this query gave me error as:

NoMethodError: undefined method `update_all' for Employee:Class

Thanks

Answer

rubish picture rubish · Apr 5, 2011

You should try to update your MongoID to latest version. Mongoid 2.0 was released sometime back. I guess update_all, destroy_all and delete_all got introduced in one of the rc's.

After upgrade, following should work

Employee.where(:address1 => 'Calgary').update_all(:salary => 10000)