如果我向域对象添加属性,这将影响到 MongoDB 文档。例如,向我的用户添加一个新的“facebookId”属性,将向我的 MongoDB 文档添加一个新的 facebookId 字段。
跟踪文档版本的不同方法是什么?
我正在考虑在我的所有文档中添加一个“_version”字段。还有其他解决方案吗?
如果我向域对象添加属性,这将影响到 MongoDB 文档。例如,向我的用户添加一个新的“facebookId”属性,将向我的 MongoDB 文档添加一个新的 facebookId 字段。
跟踪文档版本的不同方法是什么?
我正在考虑在我的所有文档中添加一个“_version”字段。还有其他解决方案吗?
如果您指的是文档架构版本,则有几个选项:
version
字段添加到所有文档或仅比原始架构更新的文档(仅在原始架构发生更改时添加)。鉴于 BSON 文档中的每个字节都很重要,我会保持简短,例如_v : 1
. 根据使用平台(如 Node.JS、C#、Java 等),拥有一个版本可能不会使反序列化变得简单。2
使用通过检测某些数据字段(例如,只有版本具有)来自动检测版本的系统facebookId
。对于简单的情况,这可以通过基于字段的存在更改对象行为在模型类中轻松处理。这是我以前做过的,它在许多场景中都很好用。如果新字段可以为空/非必需,它会使事情变得更容易(尤其是 #2 和 #4)。