Spring 如何限制ReactiveMongoRepository中的结果数

Spring 如何限制ReactiveMongoRepository中的结果数,spring,spring-data-mongodb,reactor,Spring,Spring Data Mongodb,Reactor,我正在寻找一种在ReactiveCrudepository中传递mongo查询限制的方法 我尝试在方法名中添加“First2”,但仍然得到了所有结果 我真正想要的是一种将“limit”的值传递给方法的方法,将其作为@RequestParam int limit在请求中传递 这是我的存储库代码 public interface ReactiveUserRepository extends ReactiveCrudRepository<User, String> {

我正在寻找一种在ReactiveCrudepository中传递mongo查询限制的方法

我尝试在方法名中添加“First2”,但仍然得到了所有结果

我真正想要的是一种将“limit”的值传递给方法的方法,将其作为@RequestParam int limit在请求中传递

这是我的存储库代码

public interface ReactiveUserRepository
        extends ReactiveCrudRepository<User, String> {


    @Query("{ 'roles': ?0 }")
    Flux<User> findFirst2ByRole(String role);
}
public接口ReactiveUserRepository
扩展反应积存{
@查询(“{‘角色’:?0}”)
Flux findFirst2ByRole(字符串角色);
}
这是控制器方法:

@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))));
    }
@GetMapping(path=“/byrole”,products=“application/stream+json”)
通量getByRole(@RequestParam字符串角色){
返回users.findFirst2ByRole(角色).doOnNext(下一步->{
System.out.println(“Next user=“+Next.getAssocId());
}).switchIfEmpty(Mono.error(新的ResponseStatusException(未找到HttpStatus.NOT_,String.format(“未找到角色为%s,角色为%s的用户”)));
}

尝试使用reactor方法users.findFirst2ByRole(角色)。获取(2) 此外,如果需要,您还可以在流量上使用skip()

limitRequest(long)也值得一看:

它可以用作更严格的take形式(long)

因为它会限制到上游源的请求量。这可能会阻止反应式MongoDB驱动程序在只需要有限数量的数据时请求/加载大量数据


使用limitRequest时,请确保提供的long为“>0”(我认为这是可行的;任何人都可以在管道中使用
log()
on,使用/不使用
limitRequest()。