MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Query personalizzata di primavera con paginabile

Come hai capito, MongoTemplate non supporta l'astrazione completa della pagina. Come ha detto KneeLess, puoi usare @Query -Annotazione per eseguire alcune query personalizzate.

Se questo non è abbastanza per te, puoi utilizzare il repository di primavera PageableExecutionUtils in combinazione con il tuo MongoTemplate.

Ad esempio in questo modo:

@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));
}

I repository di primavera stanno facendo lo stesso. Come puoi vedere qui , attivano anche due query.