0

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

 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/

4

1 回答 1

0

根据文档,您可以在部署、数据库或集合上设置监视。所以,也许你可以在名为“玩家”的收藏上设置手表。另一种选择是在 Aggregates.Match 中设置额外的过滤器。每个 changestream 事件都返回一个名为“ns”的命名空间对象,其中包含参与更改的数据库和集合名称。

于 2019-10-02T16:29:16.680 回答