【发布时间】: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