我正在使用 Anemone 将抓取的页面存储到 MongoDB 中。它主要工作,除了当我从 MongoDB 检索页面时访问页面标题。
当我打电话时,collection.find_one("http://stackoverflow.com")
我将从数据存储中获取正确的对象,但我无法访问标题。
Anemone 将标题存储为哈希,因此理论上,在检索文档后,我应该能够执行类似的操作
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