Wie Sie herausgefunden haben, unterstützt MongoTemplate nicht die vollständige Seitenabstraktion. Wie KneeLess sagte, können Sie die @Query
verwenden -Anmerkung, um einige benutzerdefinierte Abfragen durchzuführen.
Falls Ihnen dies nicht ausreicht, können Sie das Spring-Repository PageableExecutionUtils
verwenden in Kombination mit Ihrem MongoTemplate.
Zum Beispiel so:
@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 machen das gleiche. Wie Sie sehen können hier , lösen sie auch zwei Abfragen aus.