2010-06-21 103 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世界中的所有散列一樣對其進行交易