2017-12-20 9 views
2

게임에 대한 빠른 리더 보드를 만들고 있습니다. 순위표는 최근 10 명의 선수를 점수별로 정렬하여 보여줍니다. 내 쿼리가 작동하지 않는 것 :몽구스 : 최신 기록을 가져온 다음 다른 필드로 정렬하십시오.

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

그것은 단지 정렬 초없이 가장 최근에 10 개 개의 레코드를 반환합니다.

원하는 결과를 얻으려면 어떻게해야합니까? (그래, 나 혼자 결과 배열을 정렬 할 수 있지만, 나를 위해 "오른쪽"을 느낄 수 없다는 것을 알고)

편집 : 문제가 해결되었지만 2 일 만에 나 자신의 답을 수락 할 수 없습니다. 나는 시간이 올 때, 너의 시간 동안 너를 대단히 감사 할 것이다!

답변

0

나는 aggregate를 사용하여 문제를 해결했다. 이것은 이중 기준 문제가 아니며 쿼리 결과를 정렬하려고합니다.
0

'정렬'을 하나만 시도해 볼 수 있습니까? 여기

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

더 많은 정보 : sorting-priority

그것이 도움이되기를 바랍니다.

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

+0

가 없음이 유감 작동하지 않습니다 결국 – AVAVT