Как превратить курсор Монго во вложенный хеш? - PullRequest
0 голосов
/ 07 ноября 2010

Я новичок в Ruby и Mongo, пришедший из C # и SQL Server.У меня есть простой документ, который выглядит следующим образом:

db = Mongo::Connection.new.db("crm")
coll = db["persons"]
coll.find().each { |row| puts row.inspect }

- Выходы:

{"_id"=>BSON::ObjectId('4cd6d8db1d41c81731000001'), "company"=>"Acme Ltd", "name"=>"John Smith", "id"=>"1"}
{"_id"=>BSON::ObjectId('4cd6d8db1d41c81731000002'), "company"=>"Widget Co", "name"=>"Jane Smith", "id"=>"2"}

Мне нужно преобразовать этот объект курсора во вложенный хэш хэшей, который выглядит следующим образом:

@result = { 
  "1"=>{"name"=>"John Smith", "company"=>"Acme Ltd"},
  "2"=>{"name"=>"Jane Smith", "company"=>"Widget Co"}
}

«1» и «2» являются значениями «id» из курсора.

Есть ли какой-нибудь крутой способ Ruby для этого?

1 Ответ

0 голосов
/ 26 ноября 2010

изменить строку

coll.find().each { |row| puts row.inspect }

до

@result = {}
coll.find().each { |row| id = row.delete('id'); @result["#{id}"] = row }
puts @result.inspect

, если вы хотите удалить _id add row.delete ('_ id'); перед присвоением его переменной результата.

надеюсь, это поможет.

...