【问题标题】:Ruby and MongoDB: Traversing arbitrary BSON document retrieved from mongomapperRuby 和 MongoDB:遍历从 mongomapper 检索到的任意 BSON 文档
【发布时间】:2010-06-21 07:29:45
【问题描述】:

在 Ruby 中,如何使用 mongomapper 之类的工具遍历从集合中检索到的任意文档?假设文档看起来像这样:

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

【问题讨论】:

    标签: ruby-on-rails ruby json mongodb mongomapper


    【解决方案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
    

    【讨论】:

    • 我的意思是访问每个对象。然而,这是任意的,所以我对如何处理嵌套元素有点困惑。
    【解决方案2】:

    从 MongoMapper/Mongoid 甚至 mongo-ruby-driver 获取文档后,就像生成一个 Hash。

    所以你可以像 Ruby World 中的所有哈希一样遍历它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多