2013-08-29 11 views
22

私はmongodbでかなり新しいですが、mongodbのクエリを注文しようとしています。しかし、春のデータmongodbのソートメソッドは廃止されました。だから私はorg.springframework.data.domain.Sortを使用しましたSpring MongoDBのクエリのソート

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

私はこのコードブロックを使用しました。しかし、それはデータをソートしません。ですから、このプラクティスに有用な方法を使用することを好むことができますか?

+0

あなたのコードが正しく見える、あなたは「そのデータをソートしない」あなたが結論に来たのかそうでない – gerrytan

+2

を詳しく説明することができます注文した日付がページの上に昇る –

答えて

18

あなたはケースを無視するように、このようにあなたの並べ替えを定義することができます。

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase() 
+0

これは私の答えで数年前のことでした。私はあなたの答えを受け入れています。 –

+0

コンマで区切られたリスト(またはあらかじめ作成されたList)を実際にSortコンストラクタに渡し、複数の順序付け基準を定義することができます。 – th3morg

+2

最新のMongoDbで奇妙なことに私はうまくいきません... Mongoとそのようなコードで例外があります... java.lang.IllegalArgumentException:ソートには大文字小文字を無視したユーザ名のOrderが含まれています! MongoDBは現在ソート無視のソートをサポートしていません! –

0

私の質問のコードは本当だった、今私は、 'pdate'フィールドにはキャメルケースの問題がありました。

3

集計を使用してデータをソートすることができます。集計クエリにはマッチングとグループ化の基準を使用し、フィールドを巻き戻す必要があります。

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); 
関連する問題