【问题标题】:Can you aggregate a bunch of Mongoid sets into a bulk transaction?你能把一堆 Mongoid 集合聚合成一个批量事务吗?
【发布时间】:2020-11-15 21:11:18
【问题描述】:

Mongoid 提供无回调方法.set:

m = Model.where(..
m.set(something: true)

此方法仅更新 something 字段,并保持所有其他属性不变。

.set 是否有类似批量更新的方法,您可以在其中将它们组合成一个批量事务?我正在寻找类似的东西:

Model.bulk do
   Model.all.each do |m|
       m.set(something: value)

这可能吗?目的是通过批量更新来减少数据库的负载,我正在寻找的是是否可以使用本机 Mongoid 方法。

感谢您的帮助, 凯文

【问题讨论】:

    标签: ruby-on-rails mongoid


    【解决方案1】:
    1. 使用with_session 创建会话,如here 所述。
    2. 在会话对象上使用with_transaction,如here 所述。
    3. with_transaction 块内执行所需的sets。

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多