私はMongoDBのSpring Dataを初めて使用していて、MongoRepository拡張インタフェース内にフィルタリング、ソート、および制限が必要な自動生成クエリメソッドを持っています。Springリポジトリインタフェースでsort()とlimit()を使用したクエリ
クエリは次のようになります。
// 'created' is the field I need to sort against
find({state:'ACTIVE'}).sort({created:-1}).limit(1)
リポジトリインターフェースは次のようになります。
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();
...
}
私は1つが、ソート得るために、クエリメソッドにソート引数を追加できることを知っているが、この問題は結果を1つのオブジェクトに限定しています。カスタムJobRepositoryImplを記述することなくこれを行うことは可能ですか?
おかげ
編集:私は探しています何の
例:
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
または
@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
しかし、これは明らかに:(
おかげオリバーは、これは私が探していたまさにです。 – m1h4
私はPageableクラスを調べるのに気を使わず、ソートsort-ofと組み合わせて.sort()と.limit()関数をラップしていることに気づかずに、 mongoクエリ。 – m1h4
問題ありません、それはあなたのために働いてうれしい! :) –