【问题标题】:Mongoose: get latest records, then sort them by another fieldMongoose:获取最新记录,然后按另一个字段排序
【发布时间】:2017-12-21 07:18:54
【问题描述】:

我正在为游戏创建一个快速排行榜。排行榜显示按分数排序的最近 10 名玩家。我的查询似乎不起作用:

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

只返回最近的 10 条记录,不进行秒排序。

我怎样才能得到想要的结果? (是的,我知道我可以自己对结果数组进行排序,但对我来说感觉不“正确”)

编辑:问题已解决,但我无法在 2 天内接受自己的答案。到时候我会的,非常感谢您的宝贵时间!

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    你能像这样只尝试一种“排序”吗?

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

    更多信息在这里:sorting-priority

    希望对你有帮助。

    【讨论】:

    • 不,这不起作用抱歉。这不是双重标准问题,我正在尝试对查询结果进行排序。
    【解决方案2】:

    最后我用aggregate解决了这个问题:

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

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 2018-04-14
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多