MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête personnalisée Spring avec pagination

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.