我必须找到集合 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/