2010-06-21 61 views
0

在Ruby中,如何遍历使用类似mongomapper的某个集合检索的任意文档?比方说,在文档看起来是这样的:从MongoMapper/Mongoid取Ruby和MongoDB:遍历从mongomapper检索到的任意BSON文档

mydocs = 
[{"title":"my title", 
"description":"hello world", 
"comments":[{"user":"me","text":"this"},{"user":"him","text":"that"}] 
}, 
{.....} 
] 

回答

1
def traverse(obj, level=0, name='root') 
    s = " "*level + name.to_s + ": " 
    if obj.is_a?(Array) 
    puts s 
    obj.each_with_index{ |child,idx| traverse(child,level+1,idx) } 
    elsif obj.is_a?(Hash) 
    puts s 
    obj.each{ |k,v| traverse(v,level+1,k) } 
    else 
    puts s + obj.inspect 
    end 
end 

traverse mydocs 
+0

我的意思是访问每个对象。然而,这是任意的,所以我对如何进行嵌套元素有点困惑。 – Dex 2010-06-21 07:37:43

+0

我更新了我的答案 – 2010-06-21 07:59:33

1

后的文档,甚至蒙戈 - 红宝石驱动程序,这就像你生成一个散列。

因此,你可以像Ruby世界中的所有散列一样对其进行交易