如何在春季使用变更流来收听多个集合

时间:2019-10-04 17:37:54

标签: java mongodb spring-boot

我想要从collection_one,collection_two,collection_three等收集数据,我该怎么做?

       ChangeStreamRequest request = ChangeStreamRequest.builder().collation(Collation.of("collection_one"))
            .filter(Aggregation.newAggregation(match(where("operationType").exists(true))))
            .publishTo(krakenDtoMessageListener)
            .build();
    container.register(request, CollectionOne.class);

我应该创建多个changeStreamRequest还是应该可以?

2 个答案:

答案 0 :(得分:0)

无法监视多个集合。根据mongoDB文档,有3个选项。观看特定集合,观看数据库或观看部署(所有数据库)refer mongo documentation,了解更多详细信息

答案 1 :(得分:0)

在配置变更流时,您可以在集合上指定过滤器。

检查下面的Java代码,

List<Bson> pipeline = singletonList(Aggregates.match(
    Filters.in("ns.coll", asList("coll1", "coll2", "coll3"))
));

MongoCursor<ChangeStreamDocument<Document>> cursor = db.watch(pipeline).fullDocument(FullDocument.UPDATE_LOOKUP).iterator();

您可以使用spring框架编写类似的管道。