我正在制作可以投票的帖子。每次投票都有助于得分。每个帖子都有一个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
}
});
但是,这会导致错误。我该如何解决它或以不同的方式实现我想要的排序?感谢
答案 0 :(得分:0)
您可以使用aggregate
执行多个排序阶段:
Post.aggregate([
{$sort: {_id: -1}},
{$limit: 100},
{$sort: {score: -1}}
], function(err, posts) { ...});