Mongo Change Stream给我收藏的所有更改?

时间:2018-02-19 08:58:15

标签: mongodb stream

阅读MongoDB Change Streams。猜猜它可用于将所有更改传输到流式传输到"我的组件"。但这可能会带来巨大的开销。它实际上只对变化的一小部分感兴趣。我已经读过你可以过滤(使用$ match),但是如何工作

  • a)是过滤器传播到MongoDB实例,以便它们只为我提供通过网络匹配的更改
  • b)或过滤器只是一个"本地"便利过滤器在我身边(我仍然通过网络进行所有更改)

只是寻找一个简单的a)或b)答案。但是一些额外的评论不会受到影响。

P.S。我对一个集合感兴趣的更改会动态更改,因此它不会是一个解决方案,以确保所有"有趣的"文档进入专用集合,然后从中流式更改。但如果它不是太昂贵,它可以创建/删除每个"方面"我感兴趣的是他们改变了。一个已建立的流变换手表不一定必须支持更改其过滤器。

1 个答案:

答案 0 :(得分:1)

  

只是寻找一个简单的a)或b)答案。但是一些额外的评论不会受到影响。

MongoDB Change Streams已作为aggregation pipeline阶段实施:$changeStream。这就是为什么你也可以通过串联不同的管道阶段来利用聚合管道的力量。 $match

您可能知道,聚合管道是在服务器端执行的。哪个回答你的问题;过滤器$match在服务器上执行。

请注意,更改流返回的所有事件至少都会提交给大多数副本集节点(持久)。这意味着,聚合仅在您打开更改流的节点上执行。

  

我对集合感兴趣的更改会动态更改

根据您的使用情况,我建议根据不动态变化的字段进行过滤。

您可能会发现Using Change Streams to Keep Up with Your Data有用。