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

发布于 2024-10-01 05:03:52 字数 737 浏览 11 评论 0原文

我对 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 方法来完成这个任务?

I am new to both Ruby and Mongo, coming from a C# and SQL Server background. I have a simple document which looks like:

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

-- Outputs:

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

I need to transform this cursor object into a nested hash of hashes that looks like this:

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

The "1" and "2" are the "id" values from the cursor.

Is there a cool Ruby way to accomplish this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷雨优美回忆 2024-10-08 05:03:52

请将行更改

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

希望这会有所帮助。

change the line

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

to

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

if you want to delete the _id add row.delete('_id'); before assigning it to the result variable.

hope this will help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文