如何将Mongo游标转换为嵌套哈希?

时间:2010-11-07 17:45:10

标签: ruby hash mongodb cursor transform

我是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 :(得分:0)

更改行

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');在将其分配给结果变量之前。

希望这会有所帮助。