它们保持原样 - 不再存在的属性在加载时将被忽略(并在更改时丢失),丢失的属性将返回为空,
建议您使用基于集合的操作来使数据与对象模型保持一致。
哦,看看我,我现在在电脑上!
基本上是这样,在迁移到文档存储时,您正确地认识到您失去了一些功能并获得了一些自由,因为在数据库中您定义了一个预先定义的模式并尝试上传与该模式不匹配的数据将导致错误。
然而,重要的是要认识到,无模式和无结构之间存在差异,因为您的文档都包含它们自己的结构(表示属性名称和属性值的键/值对)。
这对于编写一些代码并保持数据持久化的整个“刚刚开始”因素很有用 - 但是当你很容易改变你的代码结构时,它可能更难与你已经持久化的数据相协调。
在这一点上出现了一些策略:
- 一旦你有持久化数据,让你的结构不可变,版本你的类
- 允许修改结构,但使用基于集合的操作来更新数据以匹配新结构
- 允许修改结构,并编写代码处理加载数据时的不一致
第三个显然是个坏主意,因为它会导致无法维护的代码,如果您只是存储事件或其他此类数据,则对您的类进行版本控制可以工作,但实际上并不适合大多数情况,所以您只剩下中间了选项。
我建议您这样做,并遵循一些简单的规则,就像您在处理关系数据库中的前期模式时所遵循的那样。
- 使用您的 VCS 系统确定已部署版本之间的更改
- 编写从一个版本升级到另一个版本的迁移脚本
- 注意重命名/删除属性 - 因为如果新文档中不存在这些属性,加载文档和保存文档将导致数据丢失
等等。
我希望这更有帮助:-)