Spring Data Mongo Template Pagination
Spring Data Mongo Template에 페이징을 하는 방법에 대해서 알아본다.
기본적으로 Spring Mongo Template에는 페이지로 찾는 방법이 없다. 전체 레코드 목록을 검색하고 반환한다.
MongoTemplate
Pagination을 추가하려면 다음과 같이 할 수 있다.
Pageable pageable = PageRequest.of(0, 10);
Query query = new Query().with(pageable);
// 원하는 쿼리 추가한다.
List<User> list = mongoTemplate.find(query, User.class, "user");
Page<User> page = PageableExecutionUtils.getPage(
list,
pageable,
() -> mongoTemplate.count(query, Patient.class));
ReactiveMongoTemplate
ReactiveMongoTemplate
을 사용한 경우에 Pagination을 추가하려면 다음과 같이 할 수 있다.
Pageable pageable = PageRequest.of(0, 10);
Query query = new Query().with(pageable);
// 원하는 쿼리 추가한다.
Mono<List<User>> list = reactiveMongoTemplate.find(query, User.class, "user").collectList();
Mono<Long> count = reactiveMongoTemplate.count(query, ActiveUser.class);
Page<User> userPage = list.zipWith(count)
.map(tuple -> PageableExecutionUtils.getPage(tuple.getT1(), param.getPageable(), tuple::getT2)
참고
최종 수정 : 2024-01-18