2013-07-21 7 views

ответ

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"}] 
Смежные вопросы