Както разбрахте, MongoTemplate не поддържа пълната абстракция на страницата. Както каза KneeLess, можете да използвате @Query
- Анотация за извършване на някои персонализирани заявки.
В случай, че това не е достатъчно за вас, можете да използвате Spring Repository PageableExecutionUtils
в комбинация с вашия MongoTemplate.
Например така:
@Override
public Page<XXX> findSophisticatedXXX(/* params, ... */ @NotNull Pageable pageable) {
Query query = query(
where("...")
// ... sophisticated query ...
).with(pageable);
List<XXX> list = mongoOperations.find(query, XXX.class);
return PageableExecutionUtils.getPage(list, pageable,
() -> mongoOperations.count((Query.of(query).limit(-1).skip(-1), XXX.class));
}
Spring Repositories правят същото. Както можете да видите тук , те задействат и две заявки.