Comme vous l'avez compris, MongoTemplate ne prend pas en charge l'abstraction complète de la page. Comme KneeLess l'a dit, vous pouvez utiliser le @Query
-Annotation pour faire des requêtes personnalisées.
Si cela ne vous suffit pas, vous pouvez utiliser le référentiel Spring PageableExecutionUtils
en combinaison avec votre MongoTemplate.
Par exemple comme ceci :
@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));
}
Les référentiels Spring font de même. Comme vous pouvez le voir ici , ils déclenchent également deux requêtes.