Ruby-为什么可以';我是否可以迭代从Mongomapper map\u reduce返回的数据?
这可能很简单,但我花了太多时间试图弄明白,我相信这里的人会知道的,所以就这样吧。请耐心点 底线是,我有一些数据,我不知道如何循环Ruby-为什么可以';我是否可以迭代从Mongomapper map\u reduce返回的数据?,ruby,Ruby,这可能很简单,但我花了太多时间试图弄明白,我相信这里的人会知道的,所以就这样吧。请耐心点 底线是,我有一些数据,我不知道如何循环 #Get the data from mongomapper map_reduce @urls = DistinctUrls.build.find() puts @urls.count 3 puts @urls.to_json [{"_id":"http://msn.com","value":3.0},{"_id":"http://yahoo.com","value
#Get the data from mongomapper map_reduce
@urls = DistinctUrls.build.find()
puts @urls.count
3
puts @urls.to_json
[{"_id":"http://msn.com","value":3.0},{"_id":"http://yahoo.com","value":12.0},{"_id":"http://google.com","value":2.0}]
@urls.each do |entry|
puts "Here I am" # Never gets printed, not sure why.
puts "url" + entry['_id']
end
我不明白的是,如果我有一个计数3,为什么它不会进入循环
我不确定mongomapper或map_reduce细节是否重要。我把它们放在这里以防万一。如果有意义的话,我可以在需要时添加map/reduce的细节。
谢谢你的帮助。你先写了
@url
,然后写了@url
。我认为其中只有一个是正确的
更新:正如上面所说的,您可以使用每个
在光标上迭代,但在完全迭代后,它将被关闭。也许这是您的案例,您已经对它进行了一次迭代。可能是to_json
做的
您可以使用以下语句检查光标是否关闭:
@urls.closed?
在迭代部分之前检查此项。首先编写
@url
,然后编写@url
。我认为其中只有一个是正确的
更新:正如上面所说的,您可以使用每个
在光标上迭代,但在完全迭代后,它将被关闭。也许这是您的案例,您已经对它进行了一次迭代。可能是to_json
做的
您可以使用以下语句检查光标是否关闭:
@urls.closed?
在迭代部分之前检查此项。如果使用了
-w
标志,则如果使用不存在的实例变量,程序将发出警告。所有这些都在此处定义。但是是的,-w
可以帮上大忙。谢谢@KARASZI。修正了那个错误。@KARASZI,你解决了。如果我将@url.each
移动到之前的json
,它就像一个符咒。非常感谢您的帮助。如果使用了-w
标志,则如果您使用的实例变量不存在,程序将发出警告。所有这些都在此处定义。但是是的,-w
可以帮上大忙。谢谢@KARASZI。修正了那个错误。@KARASZI,你解决了。如果我将@url.each
移动到之前的json
,它就像一个符咒。非常感谢您的帮助。@url的类别是什么?也许每一个都不是你所期望的。啊哈,我想你已经明白了。@URL的类别是Mongo::Cursor什么是@URL
?也许每一个都不是你所期望的。啊哈,我想你已经明白了。@URL的类是Mongo::Cursor