sql >> Base de Datos >  >> NoSQL >> MongoDB

Consulta personalizada de primavera con paginación

Como descubrió, MongoTemplate no admite la abstracción de página completa. Como dijo KneeLess, puedes usar @Query -Anotación para hacer algunas consultas personalizadas.

En caso de que esto no sea suficiente para usted, puede utilizar Spring Repository PageableExecutionUtils en combinación con su MongoTemplate.

Por ejemplo, así:

@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á haciendo lo mismo. Como puede ver aquí , también activan dos consultas.