Ruby: Переименовать ключи в массиве хэшей? Как переименовать ключи _id в id в массиве документов MongoDB? Итак, я хочу сделать следующее: [{"_id"=>"1", "name"=>"Matt"}, {"_id"=>"2", "name"=>"John"}, ...] в это: [{"id"=>"1", "name"=>"Matt"}, {"id"=>"2", "name"=>"John"}, ...] Ответ 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"}]
Ответ 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"}]