MongoDB按多个字段排序

时间:2014-10-20 16:05:10

标签: mongodb mongoose

我正在制作可以投票的帖子。每次投票都有助于得分。每个帖子都有一个id和一个分数。我正在尝试查询MongoDB以查找热门帖子。我想通过在帖子发布时排序,最近取100,然后按分数对这100个进行排序来做到这一点。 Post是一个mongoose Schema,其中包含_id和得分。我试过了:

Post.find({}).sort({_id: -1}).limit(100).sort({score: -1}).exec(function(err, posts) {
    if(err){
        res.status(500).send(err);
    } else {
        //do stuff
    }
});

但是,这会导致错误。我该如何解决它或以不同的方式实现我想要的排序?感谢

1 个答案:

答案 0 :(得分:0)

您可以使用aggregate执行多个排序阶段:

Post.aggregate([
    {$sort: {_id: -1}},
    {$limit: 100},
    {$sort: {score: -1}}
], function(err, posts) { ...});