2010-11-07 64 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');然后将其分配给结果变量。

希望这会有所帮助。