我正在为游戏创建快速排行榜。排行榜显示最近的10名球员按其得分排序。我的查询似乎不起作用:
recordModel.find({ game: gameId }).sort({updatedAt: -1}).limit(10).sort({ score: -1 }).exec( /*... */ );
它只返回最近的10条记录而没有秒排序。
如何获得理想的结果? (是的,我知道我可以自己对结果数组进行排序,但对我来说感觉不对“
)编辑:问题已解决,但我无法在2天内接受我自己的回答。我会在时机成熟时,非常感谢您的时间!
答案 0 :(得分:0)
你能尝试只有一个"排序",像这样吗?
recordModel.find({ game: gameId })
.sort({updatedAt: -1, score: -1})
.limit(10)
.exec( /*... */ );
此处提供更多信息:sorting-priority
希望它有所帮助。
答案 1 :(得分:0)
最后,我使用aggregate
解决了问题:
recordModel.aggregate([ { $match: { game: gameId} }, { $sort : { updatedAt : -1 } }, { $limit : 10 }, { $sort : { score : -1 } } ]).exec(/* ... */)