2017-12-20 12 views
2

私はゲームのための簡単なリーダーボードを作成しています。リーダーボードには、スコアでソートされた最新の10人のプレーヤーが表示されます。私のクエリが動作していないようです:マングース:最新のレコードを取得し、別のフィールドで並べ替えます。

recordModel.find({ game: gameId }).sort({updatedAt: -1}).limit(10).sort({ score: -1 }).exec(/*... */);

それが唯一の並べ替え秒せずに最新の10件のレコードを返します。

希望の結果を得るにはどうすればよいですか?編集(はい、私は自分で結果配列を並べ替えることができます知っているが、それは私のために「右」を感じていない)

:問題は解決したが、私は2日間で、私自身の答えを受け入れることはできません。私は時が来たら、あなたの時間に非常に感謝します!

答えて

0

私はaggregateを使用して問題を解決:

recordModel.aggregate([ { $match: { game: gameId} }, { $sort : { updatedAt : -1 } }, { $limit : 10 }, { $sort : { score : -1 } } ]).exec(/* ... */)

0

「ソート」を1つだけ試してみることができますか?ここ

recordModel.find({ game: gameId }) 
    .sort({updatedAt: -1, score: -1}) 
    .limit(10) 
    .exec(/*... */); 

詳細情報:sorting-priority

はそれがお役に立てば幸いです。最後に

+0

ありません、これは残念に動作しません。これは二重基準の問題ではなく、私はクエリの結果をソートしようとしています。 – AVAVT

関連する問題