深入探讨这个问题时,第一个大问题是“您如何存储变更集”?
差吗?
完整记录副本?
我个人的方法是存储差异。因为这些差异的显示确实是一个特殊的动作,所以我会将差异放入另一个“历史”集合中。
我将使用其他集合来节省内存空间。通常,您不希望简单查询的完整历史记录。因此,通过将历史记录保留在对象之外,您还可以在查询该数据时将其保留在通常访问的内存之外。
为了使我的生活更轻松,我将使历史文档包含带有时间戳记的差异字典。像这样:
{ _id : "id of address book record", changes : { 1234567 : { "city" : "Omaha", "state" : "Nebraska" }, 1234568 : { "city" : "Kansas City", "state" : "Missouri" } }}为了使我的生活变得真正轻松,我将把这一部分用于访问数据的DataObjects(EntityWrapper,无论如何)。通常,这些对象具有某种形式的历史记录,因此您可以轻松地覆盖save()方法以同时进行此更改。
更新:2015-10
看起来现在有了处理JSON差异的规范 。这似乎是存储差异/更改的更可靠的方法。



