2013-07-21 62 views
1

如何在一系列MongoDB文檔中將_id鍵重命名爲idRuby:重命名散列數組中的鍵?

所以,我想使這個:

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

到這一點:

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

回答

3

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

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

這工作得很好,但是,它真的不是那麼明顯(一覽)什麼正在完成,所以可能會混淆另一個編碼器。使它成爲一個輔助方法,或者至少添加一個評論,會使它更好。 –

0
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"}]