ご存知のように、MongoTemplateは完全なページ抽象化をサポートしていません。 KneeLessが言ったように、@Query
を使用できます -いくつかのカスタムクエリを実行するための注釈。
これだけでは不十分な場合は、Springリポジトリの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リポジトリも同じことをしています。ご覧のとおり、ここ 、2つのクエリも実行します。