MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Spring Custom Query com paginação


Como você descobriu, o MongoTemplate não suporta a abstração de página completa. Como KneeLess disse, você pode usar o @Query -Anotação para fazer algumas consultas personalizadas.

Caso isso não seja suficiente para você, use o Spring Repository PageableExecutionUtils em combinação com seu MongoTemplate.

Por exemplo assim:
@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 estão fazendo o mesmo. Como você pode ver aqui , eles também disparam duas consultas.