【问题标题】:Ruby: Rename keys in array of hashes?Ruby:重命名哈希数组中的键?
【发布时间】:2013-07-20 08:08:22
【问题描述】:

如何在 MongoDB 文档数组中将 _id 键重命名为 id

所以,我想做这个:

[{"_id"=>"1", "name"=>"Matt"}, {"_id"=>"2", "name"=>"John"}, ...]

进入这个:

[{"id"=>"1", "name"=>"Matt"}, {"id"=>"2", "name"=>"John"}, ...]

【问题讨论】:

    标签: ruby arrays hash key rename


    【解决方案1】:

    我找到了完整的解决方案。

    mongo_db['users'].find().to_a.each do |u|
      u['id'] = u.delete '_id'
    end.to_json
    

    【讨论】:

    • 这工作得非常好,但是,实际上(一目了然)正在做什么并不那么明显,因此可能会使其他编码人员感到困惑。让它成为一个辅助方法,或者至少添加一个评论,会让它变得更好。
    【解决方案2】:
    ar = [{"_id"=>"1", "name"=>"Matt"}, {"_id"=>"2", "name"=>"John"}]
    ar.each{|h| h.store('id',h.delete('_id'))}
    ar # => [{"name"=>"Matt", "id"=>"1"}, {"name"=>"John", "id"=>"2"}]
    

    如果您不想修改原始数组,请执行以下操作:

    ar = [{"_id"=>"1", "name"=>"Matt"}, {"_id"=>"2", "name"=>"John"}]
    ar.map{|h| {"id"=>h['_id'], "name"=>h['name']} }
    # => [{"id"=>"1", "name"=>"Matt"}, {"id"=>"2", "name"=>"John"}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多