【发布时间】:2020-09-18 11:37:13
【问题描述】:
我正在使用 MongoDB 的聚合管道生成一个新的集合 B,其中包含来自集合 A 的聚合结果。为此,我使用了$out 阶段。每次我运行聚合管道时,都可能会添加新文档,可能会更新一些文档,也可能会删除一些文档。
我现在想要对聚合集合 B 进行更改流,以便在聚合生成与前一个结果不同的结果时收到通知(即至少一个插入/更新/删除)。
但是,如果我使用$out 阶段,则每次执行时都会重新创建集合,并且我会得到rename 和invalidate 的更改,然后关闭流。我可以使用start_after 和恢复令牌再次打开流,但我没有收到更改通知(rename 和invalidate)。
我尝试使用$merge 来避免重新创建集合。更改流按预期工作,但我无法再从集合 B 中删除旧文档。
有没有办法让我的用例工作(即聚合管道的结果是集合的新内容 + 从以前的集合内容中获取插入/删除/更新的更改通知)?
【问题讨论】:
标签: mongodb aggregation-framework