2

mongodbの複数のフィールドを、mongodbのスプリングデータを使用してソートしたい。私はこれをやっているときに現在、私はそれがDESC順の「タイプ」と「CreatedDateに」に並べ替え、この使用して集約を実現するためにSpringデータmongodb複数のフィールドにソート

Aggregation agg = newAggregation( 
      match(Criteria.where("userId").is(userId)), 
      sort(Sort.Direction.DESC, "type", "createdDate"), 
    ); 
    AggregationResults<MyBean> results = mongoOperations.aggregate(agg, MyBean.class, MyBean.class); 

をしようとしています。しかし私はDESCを "タイプ"に、ASCを "createdDate"にしたいと思っています。

私は

sort(Sort.Direction.DESC, "type"); 
    sort(Sort.Direction.ASC, "createdDate"); 
を試してみましたが、これは唯一のCreatedDateににソートされます。

答えて

1

このようなことを試すことができます。

Aggregation agg = newAggregation(
     match(Criteria.where("userId").is(userId)), 
     sort(Sort.Direction.DESC, "type").and(Sort.Direction.ASC, "createdDate") 
); 
0

あなたは順序リストを作成し、このようにソートのためにそれを使用することができます

List<Order> orders = new ArrayList<>(); 
orderQuery.add(new Order(Direction.DESC, "createdDate")); 
Sort sorts = new Sort(orders.toArray(new Order[orders.size()]));  
Aggregation agg = newAggregation(
     match(Criteria.where("userId").is(userId)), 
     sort(sorts) 
); 
1

リトル少し遅く、他の人のための... は(春・データ用)にこれを試してみてください:

private static final Sort NOTE_SORT = new Sort(new Sort.Order(Sort.Direction.ASC, "seen"), 
               new Sort.Order(Sort.Direction.DESC, "date"), 
               new Sort.Order(Sort.Direction.ASC, "done")); 
関連する問題