我是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方法来实现这个目标?
答案 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');在将其分配给结果变量之前。
希望这会有所帮助。