【问题标题】:MongoDB change streamsMongoDB 更改流
【发布时间】:2019-10-01 12:43:30
【问题描述】:

我已经开始处理 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/

【问题讨论】:

    标签: java mongodb changestream


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多