Jak się zorientowałeś, MongoTemplate nie obsługuje pełnej abstrakcji strony. Tak jak powiedział KneeLess, możesz użyć @Query
-Adnotacja do wykonania niektórych niestandardowych zapytań.
Jeśli to Ci nie wystarczy, możesz skorzystać z repozytorium Spring PageableExecutionUtils
w połączeniu z MongoTemplate.
Na przykład tak:
@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));
}
Repozytoria wiosenne robią to samo. Jak widać tutaj , uruchamiają również dwa zapytania.