web-dev-qa-db-ja.com

Spring MongoDBクエリの並べ替え

私はmongodbではかなり新しいです。そして、順序付けられたmongodbクエリを作成しようとしています。ただし、スプリングデータmongodbのソート方法は非推奨です。だから私はorg.springframework.data.domain.Sort

Query query = new Query();
query.with(new Sort(Sort.Direction.ASC,"pdate"));
return mongoTemplate.find(query, Product.class);

このコードブロックを使用しました。ただし、データはソートされません。だから、あなたはこの実践のために有用な方法を使用することを好むことができますか?

29
İlker Korkut

大文字と小文字を区別しないように、この方法でソートを定義できます。

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase()
30
dev

sリポジトリにカスタムクエリを記述したら、呼び出し中にソートを実行できます。お気に入り、

リポジトリ

@Query("{ 'id' : ?0}")
List<Student> findStudent(String id, Sort sort);

呼び出し中

Sort sort = new Sort(Sort.Direction.ASC, "date")
List<Student> students = studentRepo.findStudent(1, sort);  

これがお役に立てば幸いです! :)

7
imbond

データの並べ替えに集計を使用できます。集計クエリに一致およびグループ化の基準を使用し、フィールドを巻き戻す必要があります。

AggregationOperation match = Aggregation.match(matching criteria);
AggregationOperation group = Aggregation.group("fieldname");
AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC, "fieldname");
Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("fieldname"),match,group,sort);
3
Jijesh Kumar
query.with(new Sort(Sort.Direction.ASC, "timestamp"));

昇順または降順のソートをそれぞれ指定するには、フィールドとしてのソートパラメーター1または-1を覚えておいてください。

0
Pravin

私の質問のコードは真実でした。今では、フィールド「pdate」にキャメルケースの問題がありました。

0
İlker Korkut