2010-11-07 62 views
0

我是來自C#和SQL Server背景的Ruby和Mongo的新手。我有一個簡單的文檔,它看起來像:如何將Mongo遊標轉換爲嵌套散列?

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方式來實現這一目標?

回答

0

更改的行

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

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

,如果你想刪除的_id添加row.delete( '_ ID');然後將其分配給結果變量。

希望這會有所幫助。