Ruby и MongoDB: обход произвольного документа BSON, полученного из mongomapper - PullRequest
0 голосов
/ 21 июня 2010

Как в Ruby пройти произвольный документ, извлеченный из коллекции, используя что-то вроде mongomapper?Допустим, документ выглядит примерно так:

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

Ответы [ 2 ]

1 голос
/ 22 июня 2010

После извлечения документа из MongoMapper / Mongoid или даже mongo-ruby-driver это похоже на генерацию хэша.

Таким образом, вы можете пересечь его, как и весь хеш в Ruby World

1 голос
/ 21 июня 2010
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
...