0

如果我向域对象添加属性,这将影响到 MongoDB 文档。例如,向我的用户添加一个新的“facebookId”属性,将向我的 MongoDB 文档添加一个新的 facebookId 字段。

跟踪文档版本的不同方法是什么?

我正在考虑在我的所有文档中添加一个“_version”字段。还有其他解决方案吗?

4

1 回答 1

0

如果您指的是文档架构版本,则有几个选项:

  1. 您可以将version字段添加到所有文档或仅比原始架构更新的文档(仅在原始架构发生更改时添加)。鉴于 BSON 文档中的每个字节都很重要,我会保持简短,例如_v : 1. 根据使用平台(如 Node.JS、C#、Java 等),拥有一个版本可能不会使反序列化变得简单。
  2. 2使用通过检测某些数据字段(例如,只有版本具有)来自动检测版本的系统facebookId。对于简单的情况,这可以通过基于字段的存在更改对象行为在模型类中轻松处理。这是我以前做过的,它在许多场景中都很好用。
  3. 更新集合中的所有文档以反映新模式。这可以在短暂的系统停机时间内一次性完成(取决于文档的数量)。
  4. 根据需要,更新文档(读取文档时,如果它与当前架构不匹配,则重写它)。我已经在非 MongoDB 系统中使用了它......它可以很好地工作(但它也应该在 MongoDB 中很好地工作)。

如果新字段可以为空/非必需,它会使事情变得更容易(尤其是 #2 和 #4)。

于 2013-03-17T18:25:25.400 回答