或者是否有一个从 YAML 到 Mongo DB 之类的映射器,可以让我透明地将它用作 YAML 存储?
据我所知,不是直接的。
主要问题似乎是 Mongo DB 的接口基于散列(即键值对)。所以本质上你是在问是否有从 YAML 到哈希的映射器。答案并不简单,因为 YAML 可以存储任意结构,而哈希则不能。
但是,如果您愿意简化对象,则可以部分执行此操作:
class SomeObject
def initialize
@bob = 'abc'
@fred = 'cde'
end
def to_hash
h = {}
instance_variables.sort.each do |v|
h[v] = instance_variable_get(v)
end
return h
end
如果您查看 to_yaml 代码,您会发现它与 to_hash 方法非常相似(因为这是我的想法)。
请注意,您可能还需要一个 from_hash 方法。你可能想开始为具有对象实例变量的类制定一个方案(即不仅仅是字符串、符号等)
现在插入项目的 mongo 代码:
include Mongo
db = MongoClient.new.db('test')
stuff = db.collection('stuff')
item = SomeClass.new()
... other code ...
stuff.insert(item.to_hash)
我意识到这并不能直接回答您的问题,但希望它仍然有帮助。
约翰