我想举一个我正在努力解决的设计决策的例子:
假设我有一个“To Do List”应用程序,每个列表都定义为一个 MongoDB 文档,其项目定义为一个嵌入式集合。
这很简单,但是现在我想添加一种“fork”功能,这样我的朋友就可以复制我的文档,并且每当我在原始文档上对它们进行更改时,它们都会自动同步。
也就是说,当我在我的列表中添加、重命名、删除或重新排序项目时,我将能够更新他们的列表,同时仍然保持他们的项目处于选中/未选中状态。
这里有一些想法,但我是 MongoDB 的新手,无法说出每个想法的实现难度,这是可取的,并且看不到所有可能出现的问题:
- RDBMS 方式:将项目保存为单独的集合,每个项目都由嵌入在列表中的“选中/未选中”项目引用(本质上是多对多关系)。
- 参考原始项目:每个嵌入的复制项目都会引用原始文档中的对应项,这样我就可以知道原始项目是否被重命名、删除或新添加。
任何人都可以提供任何可以帮助决定解决方案的见解吗?
更新:
作为用户体验的一部分,我想让复制文档的所有者决定是否更新他的列表,所以我认为第一个实现不太适用。
但是,如何使用第二种方法来跟踪变化呢?