ruby - 使用 Mongoid,我可以 "update_all"一次将一个值推送到多个条目的数组字段吗?

标签 ruby arrays mongodb mongoid update-all

使用 Mongoid,是否可以使用 "update_all"将一个值推送到一个数组字段中,用于匹配特定条件的所有条目?

例子:

class Foo
  field :username
  field :bar, :type => Array

  def update_all_bars
    array_of_names = ['foo','bar','baz']
    Foo.any_in(username: foo).each do |f|
      f.push(:bar,'my_new_val')
    end
  end
end

我想知道是否有一种方法可以使用“update_all”(或类似的东西)一次更新所有用户(将值“my_new_val”推送到每个匹配条目的“foo”字段)而不是循环遍历他们一次更新一个。我已经尝试了所有我能想到的方法,但到目前为止没有运气。

谢谢

最佳答案

您需要从 Mongo DB 驱动程序中调用它。你可以这样做:

Foo.collection.update( 
  Foo.any_in(username:foo).selector, 
  {'$push' => {bar: 'my_new_val'}},
  {:multi => true}
)

或者

Foo.collection.update( 
  {'$in' => {username: foo}}, 
  {'$push' => {bar: 'my_new_val'}},
  {:multi => true}
)

如果需要,可以在 Mongoid 内置中执行 pull_request 或功能请求。

关于ruby - 使用 Mongoid,我可以 "update_all"一次将一个值推送到多个条目的数组字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9637728/

相关文章:

javascript - 如何处理循环内的异步调用?

java - Spring Data MongoDB 中 @MongoId 相对于 @Id 有什么用?

ruby - ||=(或等于)在 Ruby 中是什么意思?

ruby - 有没有办法告诉 RubyMine 不要使用 webrick?

ruby - 与 MRI 相比,mruby 的主要遗漏是什么?

java - Java 中 N 维数组的大小可以改变吗?

ruby - Rails 子域不起作用

ios - 访问特定索引中的数组

linux - 将 Meteor MongoDB 从一个 VPS 迁移到另一个?

javascript - MongoError : multi update only works with $ operators while using bulk find and update in node. js