Ruby mongoid使用条件更新所有文档

Ruby mongoid使用条件更新所有文档,ruby,mongoid,document,Ruby,Mongoid,Document,我有一个模型 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'"

我有一个模型

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

谢谢

您应该尝试将MongoID更新到最新版本。Mongoid 2.0早就发布了。我猜其中一个rc中引入了更新、销毁和删除

升级后,以下各项应能正常工作

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


还有一个快速的Model.response_to?(:update_all)输出true,表明Model.update_all很好

这是一种使用(底层驱动程序)进行更新的最新方法:


奇怪的查询顺便说一句:p

更新:我目前正在使用mongoid v2.0.0 beta19AFAIK。问题是
Update\u all
是资源列表(结果数组)上的一种方法,而不是模型本身。因此,您不能调用Foo.update\u all,但可以调用Foo.some\u selection.update\u all。@伯克斯:您可以使用
Foo.scoped.update\u all
Employee.collection.find(address1: 'Calgary').update_all(salary: 10000)