Spring Data Mongo Template Pagination
Learn how to add pagination with Spring Data Mongo Template.
By default, Spring Mongo Template does not provide a way to search by page. It searches and returns the complete list of records.
MongoTemplate
Add pagination as follows:
Pageable pageable = PageRequest.of(0, 10);
Query query = new Query().with(pageable);
// Add the desired query.
List<User> list = mongoTemplate.find(query, User.class, "user");
Page<User> page = PageableExecutionUtils.getPage(
list,
pageable,
() -> mongoTemplate.count(query, Patient.class));
ReactiveMongoTemplate
When using ReactiveMongoTemplate, add pagination as follows:
Pageable pageable = PageRequest.of(0, 10);
Query query = new Query().with(pageable);
// Add the desired query.
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));