私は MongoDB で Spring Data を初めて使用し、フィルタリング、ソート、および制限を必要とする MongoRepository 拡張インターフェース内に自動的に生成されたクエリ メソッドを持ちたいと考えています。
クエリは次のようになります。
// '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();
...
}
並べ替えを取得するためにクエリ メソッドに Sort 引数を追加できることはわかっていますが、問題は結果を 1 つのオブジェクトだけに制限することです。カスタムの JobRepositoryImpl を書かなくても、これを行うことは可能ですか?
ありがとう
編集:
私が探しているものの例:
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
また
@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
しかし、これは明らかに機能しません:(