【问题标题】:Mongoid - .limit(n) ignoredMongoid - .limit(n) 被忽略
【发布时间】:2021-06-23 13:07:30
【问题描述】:

mongoid 7.0 .limit(n) 似乎被部分忽略了。

在查询数据并限制其大小时,.limit(n) 在从中创建数组或迭代项目后按预期工作。这并不理想,但还可以。

但在将限制与 update_all 结合使用时会出现更大的问题。

Model.where(foo: 'bar').limit(100).update_all(foo: 'baz')

在这种情况下,限制会被完全忽略,更新会更新所有文档而不考虑限制。

当然,您总是可以逐一进行,但这可能是您不想在更大的数据(在我们的案例中当时有数千个文档)上做的事情。

我能想到的唯一解决方法是选择文档 ID。用它们创建一个数组,创建一个查询,只搜索那些 id 文档并将它们一起更新。

ids = Model.where(foo: 'bar').only('_id').limit(1000).to_a
Model.where(:_id.in => ids).update_all(foo: 'baz')

有没有什么方法可以在不先创建数据数组的情况下使限制起作用?

【问题讨论】:

    标签: mongoid


    【解决方案1】:

    更新命令does not provide for arbitrary limiting of the number of updates performed。您可以更新一个文档或所有匹配的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      相关资源
      最近更新 更多