MongoDB变更流

时间:2019-10-01 12:43:30

标签: java mongodb changestream

我已经开始处理MongoDB变更流,并设置了一些流来监视大约30个数据库的变更。我只需要观看两个集合,我想知道是否可以编写一些管道或过滤器来观看具有所提供名称或名称一部分的集合。 例如,我从ChangeStreamDocument的namespaceDocumentation获得集合名称,并且我想在所有数据库上观看与“玩家”相等的集合。我正在监视整个服务器的更改,但现在我收到有关每个更改的集合,但我不希望那样,只有特定的集合。

 final ChangeStreamPublisher<Document> publisher = client.watch(Arrays.asList(
            Aggregates.match(
                    Filters.in("operationType", Arrays.asList("insert", "update", "delete"))
            ))).fullDocument(FullDocument.UPDATE_LOOKUP);

我在考虑是否可以在其中放置一些过滤器,以使流仅监视具有相应名称的集合。

文献素:https://docs.mongodb.com/manual/changeStreams/

1 个答案:

答案 0 :(得分:0)

根据文档,您可以在部署,数据库或集合上设置监视。因此,也许您可​​以对名为“ players”的收藏集进行监视。另一种选择是在Aggregates.Match中设置其他过滤器。每个changestream事件都返回一个名为“ ns”的名称空间对象,该对象具有参与更改的数据库和集合名称。