0

Rubyでは、mongomapperなどを使用して、コレクションから取得した任意のドキュメントをトラバースするにはどうすればよいですか?ドキュメントが次のようになっているとしましょう。

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

2 に答える 2

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
于 2010-06-21T07:35:05.877 に答える
1

MongoMapper/Mongoid または mongo-ruby-driver からドキュメントをフェッチした後は、ハッシュを生成するようなものです。

したがって、Ruby World のすべてのハッシュのように横断できます。

于 2010-06-22T13:22:50.097 に答える