Ich bin neu mit Spring Data mit MongoDB und möchte eine automatisch generierte Abfrage-Methode innerhalb meiner MongoRepository Erweiterungsschnittstelle, die Filterung, Sortierung und Begrenzung erfordert.Abfrage mit sort() und limit() in Spring Repository-Schnittstelle
Die Abfrage sieht wie folgt aus:
// 'created' is the field I need to sort against
find({state:'ACTIVE'}).sort({created:-1}).limit(1)
Das Repository-Schnittstelle sieht wie folgt aus:
public interface JobRepository extends MongoRepository<Job, String> {
@Query("{ state: 'ACTIVE', userId: ?0 }")
List<Job> findActiveByUserId(String userId);
// The next line is the problem, it wont work since
// it's not in the format @Query expects
@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
Job findOneActiveOldest();
...
}
Ich weiß, dass man ein Sortieren Argument einer Abfragemethode, um das Sortieren zu bekommen hinzufügen können aber Das Problem beschränkt die Ergebnisse auf ein einzelnes Objekt. Ist das möglich, ohne ein eigenes JobRepositoryImpl schreiben zu müssen?
Dank
Edit:
Beispiel von dem, was ich suche:
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
oder
@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
Aber das funktioniert natürlich nicht :(
Dank Oliver, das ist genau das, was ich suchte. – m1h4
Ich war so beschäftigt, auf der Suche nach einer kurzen und einfachen Abfrage-ähnliche Lösung, die ich nicht die Mühe machte, die Klasse Pageable zu untersuchen und erkennen, dass dies in Kombination mit Sortierung die .sort() und .limit() -Funktionalitäten von eine Mongo-Abfrage. – m1h4
Kein Problem, froh, dass es für Sie geklappt hat! :) –