Mongoose:获取最新记录,然后按另一个字段对它们进行排序

时间:2017-12-20 13:23:49

标签: node.js mongodb mongoose

我正在为游戏创建快速排行榜。排行榜显示最近的10名球员按其得分排序。我的查询似乎不起作用:

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

它只返回最近的10条记录而没有秒排序。

如何获得理想的结果? (是的,我知道我可以自己对结果数组进行排序,但对我来说感觉不对“

编辑:问题已解决,但我无法在2天内接受我自己的回答。我会在时机成熟时,非常感谢您的时间!

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(/* ... */)