gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:29:17 24 4
gpt4 key购买 nike

使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com