我正在寻找一种将限制传递给ReactiveCrudRepository中的mongo查询的方法
我尝试在方法名称中添加“ First2”,但仍获得所有结果。
我真正在寻找的是一种将'limit'值传递给该方法的方法,将其作为@RequestParam int limit传递给请求
这是我的存储库代码
public interface ReactiveUserRepository
extends ReactiveCrudRepository<User, String> {
@Query("{ 'roles': ?0 }")
Flux<User> findFirst2ByRole(String role);
}
这是控制器方法:
@GetMapping(path = "/byrole", produces = "application/stream+json")
Flux<User> getByRole(@RequestParam String role) {
return users.findFirst2ByRole(role).doOnNext(next -> {
System.out.println("Next user=" + next.getAssocId());
}).switchIfEmpty(Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("No users found with role=%s", role))));
}
答案 0 :(得分:0)
尝试使用反应堆方法users.findFirst2ByRole(role).take(2) 您也可以根据需要使用skip()
答案 1 :(得分:0)
limitRequest(long)也许也值得一看:https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#limitRequest-long-
它可以用作take(long)的更严格形式
因为它确实限制了向上游源发出的请求量。当只需要有限数量的数据时,这可能会阻止反应式MongoDB驱动程序请求/加载大量数据。
在使用limitRequest时,请确保所提供的long为“> 0”(<0没有意义,= 0表示永远无法完成Flux)