0
複数のフィールドに基づいてレコードをソートしようとしています。しかし、レコードは最初のソート基準によってのみソートされます。ソートプロパティを別々に使用するとうまくいきます。春のmongoのタイムスタンプフィールドで日付のみを指定する
期待される結果は、まず、作成日によって降順に並べ替える必要があります。次に、ユーザーが並べ替えて降順で並べ替える必要があります。
以下は私のレコードリストです。予想される結果は、レコード3レコード2とレコード1の順である必要があります。まず、createdDateでソートされ、次にユーザーカウントでソートされます。以下
// record 1
{
"_id": "a46asgasyas"
"content": "sample data set 1",
"userscount": 0,
"createdDate": ISODate("2016-12-11T13:45:53.991Z")
},
// record 2
{
"_id": "a46asgasyas"
"content": "sample data set 2",
"userscount": 0,
"createdDate": ISODate("2016-12-17T13:45:53.991Z")
},
// record 3
{
"_id": "a46asgasyas"
"content": "sample data set 3",
"userscount": 2,
"createdDate": ISODate("2016-12-15T13:45:53.991Z")
}
私が試みたコード、
**Code snippet 1:**
new Sort(new Sort.Order(Sort.Direction.DESC, "createdDate"),
new Sort.Order(Sort.Direction.DESC, "userscount"));
**Code snippet 2:**
new Sort(new Sort.Order(Sort.Direction.DESC, "createdDate").and(,
new Sort.Order(Sort.Direction.DESC, "userscount")));
両方のコードは最初の基準に基づいてのみソートされています。コードがどちらのソート基準でも機能しないのはなぜですか?
typo( 'users'は' userscount'でなければなりません)とは別に、クエリは正常に動作します。クエリーは、まずdescDown順のcreatedDateフィールドでソートされ、次に、各createdDateソート内で、desccount順のuserscountフィールドによってソートされます。 – Veeram
@Veeramええ、それは動作していません – Karthik
それは正常に動作します。あなたには十分な文書がありません。追加ドキュメント '{ " userscount ":1、 " createdDate ":ISODate(" 2016-12-11T13:45:53.991Z ") }' { "userscount":1、 "createdDate":ISODate( "2016-12-11T13:45:53.991Z") } { "userscount":0、 "createdDate":ISODate( "2016-12-11T13:45:53.991Z" ) } '。 userscount descでどのようにソートされているかに注目してください。 – Veeram