比方说,我在MongoDB中一个大的查询(此练习的目的说出来返回1M记录),如:将Mongo查询转换为Ruby数组的最佳方法?
users = Users.where(:last_name => 'Smith')
如果我通过这个结果循环,每个成员的工作,喜欢的东西:
users.each do |user|
# Some manipulation to "user"
# Some calculation for "user"
...
# Saving "user"
end
我经常会得到一个Mongo游标超时(因为保留的数据库游标超过默认超时长度)。我知道我可以延长光标超时,甚至关闭它 - 但这并不总是最有效的方法。因此,一个方式,我解决这个得到的是的代码更改为:THEN
users = Users.where(:last_name => 'Smith')
user_array = []
users.each do |u|
user_array << u
end
,我可以通过user_array循环(因为它是一个Ruby数组),做操作和计算,而不必担心一个MongoDB的超时。
这工作正常,但必须有更好的方法 - 有没有人有建议?
没有'to_a'? – tokland
如果有的话,我会觉得很愚蠢。现在测试@tokland – jbnunn
是的,Users.where(:last_name =>'Smith').to_a的作品。谢谢+1 ...在下面的Sergio的评论中,我将实现他的批处理方法,再加上Ruby的本地to_a,而不是手动循环。谢谢 – jbnunn