我知道在MongoDB服务器中对单个文档进行版本控制的几种方法。但是,我想添加单个文档的版本控制和整个版本的版本控制。即如果文档A从版本1更改为2,我还想知道A在版本2时的版本,文档B,C,D等的版本。
这里的基本目标是数据来源。假设我在一组文档D上有查询Q,生成结果R.我想保存D + Q = R,所以当D变为D'因为文档已经改变,我有D'+ Q = R' 。
有关在MongoDB中执行此操作的最佳策略的任何想法?我可以保留具有所有其他文档版本的单独文档,但运行查询似乎非常昂贵。我可以使用时间戳而不是版本,这可能会正常工作。我不知道MongoDB中是否存在对此类事物的支持?
感谢。
答案 0 :(得分:0)
在MongoDB中没有对此类功能的特定支持,您必须在应用程序代码中实现它。听起来你有一个非规范化模式:R实际上是Q的缓存,你必须在D改变时无效。当您更新D中的任何文档时,您可以同步执行此失效,或者您可以安装某个任务队列(例如RabbitMQ)并在每次更改D时向其中插入任务,并从队列中执行后台进程拉取任务。后台进程然后更新R.具体实现取决于您需要R的一致性。