MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Spring Custom Query mit auslagerbaren

Wie Sie herausgefunden haben, unterstützt MongoTemplate nicht die vollständige Seitenabstraktion. Wie KneeLess sagte, können Sie die @Query verwenden -Anmerkung, um einige benutzerdefinierte Abfragen durchzuführen.

Falls Ihnen dies nicht ausreicht, können Sie das Spring-Repository PageableExecutionUtils verwenden in Kombination mit Ihrem MongoTemplate.

Zum Beispiel so:

@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 machen das gleiche. Wie Sie sehen können hier , lösen sie auch zwei Abfragen aus.