gpt4 book ai didi

ruby - 如何将 BSON::Binary 反序列化回 ruby​​ 哈希?

转载 作者:可可西里 更新时间:2023-11-01 10:44:20 24 4
gpt4 key购买 nike

我正在使用 Anemone 将抓取的页面存储到 MongoDB 中。它主要工作,除了当我从 MongoDB 检索页面时访问页面标题。

当我调用 collection.find_one("http://stackoverflow.com")我将从数据存储中获取正确的对象,但无法访问 header 。

Anemone 将 header 存储为哈希,因此理论上,在检索文档后,我应该能够执行类似

document["headers"]["content-type"]

但这行不通,因为 document["headers"]是一个 BSON::Binary。

puts document["headers"]

显示文本和二进制字符的混合。

如何根据从 MongoDB 返回的二进制数据创建可用的 ruby​​ 哈希对象?

编辑:我还没有解决最初的问题,但能够修改 Anemone 以便我可以让它为我加载数据,这似乎可行:

class NewMongo < Anemone::Storage::MongoDB
def initialize(mongo_db, collection_name)
@db = mongo_db
@collection = @db[collection_name]
#Do not delete the collection! I need it!
#@collection.remove
@collection.create_index 'url'
end
end

然后……

repo = NewMongo.new(db, "pages")
repo.each db |url, page|
puts page.content_type
end

最佳答案

如果数据由 Anemone 存储后端以二进制格式存储,除非您知道格式或它们提供反序列化器,否则您无能为力。听起来这对于存储 header 来说是一个糟糕的选择,因为散列对于它来说是一种更自然的形式。

关于ruby - 如何将 BSON::Binary 反序列化回 ruby​​ 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com