使用 find_each? 指定要返回的字段
目前,我们使用 MongoMapper 编写了批处理代码,但仍然比我们希望的要花更长的时间:
User.find_each(conditions: {is_active: true}, batch_size: 500) do |user|
# simple stuff that only requires a couple fields from user
end
是否有某种方法可以告诉它只从用户模型中返回我们需要的字段,就像使用非批处理查找所做的那样?
User.where(is_active:true).fields(:field1, :field2).all
更改批量大小并没有帮助,因此我们正在寻找其他想法。
谢谢!
We currently have this batched code using MongoMapper which is still taking longer than we would like:
User.find_each(conditions: {is_active: true}, batch_size: 500) do |user|
# simple stuff that only requires a couple fields from user
end
Is there some way to tell it to only return the fields we need from the User model like you can do with a non-batched find?
User.where(is_active:true).fields(:field1, :field2).all
Changing the batch size hasn't helped so we're looking for other ideas.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试
try
MongoMapper 的
fields
过滤器应该可以与正常工作find_each
。但是,当在查询链的末尾使用时,find_each 返回一个枚举器而不是调用块,因此您必须添加额外的.each
:MongoMapper's
fields
filter should work fine withfind_each
. But, when used at the end of a query chain, find_each returns an enumerator rather than calling the block, so you have to add an extra.each
: