【发布时间】:2012-01-09 18:58:13
【问题描述】:
您将如何在 MongoDB (mongoid) 中深度克隆文档
我尝试过这样的事情;
original = Car.find(old_id)
@car = original.clone
@car._id = BSON::ObjectId.new
但是之后我遇到了值反序列化的问题。
如何使用除 _id 之外的所有文档属性进行深度克隆?
编辑: 在遵循 Zachary 的示例后,我遇到了一些重复文档的自定义序列化类的问题。
class OptionHash
include Mongoid::Fields::Serializable
# Convert the keys from Strings to Symbols
def deserialize(object)
object.symbolize_keys!
end
# Convert values into Booleans
def serialize(object)
object.each do |key, value|
object[key] = Boolean::MAPPINGS[value]
end
end
对于重复的文档,对象为零。 Car.find(old_id).attributes 确实不包含自定义序列化的字段,为什么会这样,我该如何包含它?
【问题讨论】:
-
您能具体说明一下问题吗?
-
以后有什么问题?
-
我想问题是嵌入文档的 ID 没有得到更新。即与原始文档中嵌入文档的 id 冲突。