java - 在 Spring Data Mongodb Reactive 中执行顺序查询

标签 java spring-data-mongodb spring-webflux

我必须找到集合 B 中未在集合 A 中引用的所有文档。

使用ReactiveMongoRepository中的方法

Flux<A> findAll();

所以我编写了这段代码:

collectionARepository.findAll()
    .flatMap(d -> d.documentBID())
    .collectList()
    .flatMap(list -> collectionBRepository.findDocsNotIn(list))
    .flatMap(b -> log.info(b.id())
    .subscribe();

但是,如果集合 A 中没有文档,则不会执行第二个查询。如何强制执行第二个以获取所有文档。

最佳答案

找到解决方案。

由于某种原因,我的 IDE 没有显示错误,但是当我使用 collectList 时,我从 Flux 传递到 Mono。当我调用 flatMap (它应该显示错误)时,我无法返回 Flux,只能返回 Mono。这会导致异常,并且被视为“未找到实体”。我的错。

这是我的最终代码:

collectionARepository.findAll()
    .flatMap(d -> d.documentBID())
    .collectList()
    .flatMapMany(list -> collectionBRepository.findDocsNotIn(list))
    .flatMap(b -> log.info(b.id())
    .subscribe();

关于java - 在 Spring Data Mongodb Reactive 中执行顺序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57296567/

相关文章:

java - 外部化 URL 的最佳方式是什么?

java - 当验证者出错时会发生什么

java - "Connection refused"高速公路 Android 到 Java EE 端点

java - 在 Spring Data MongodB 存储库中查询集合内的字符串

嵌入式文档内部字段的 Spring Data Mongo DB 查询(DBRef)

spring-boot - Spring 5 WebFlux服务器通过RSocket协议(protocol)推送通知

java - 是否可以从 GetMapping ("index")处理程序返回 Mono.just ("/")?

java - Servlet 分析

mongodb - 在 Spring Mongo Db 中按文档数组分组

java - 无法将部件的内容 (Flux<DataBuffer>) 读取到单个字符串中