2014-10-20 80 views
0

我在發表可以投票的帖子。每個投票都有助於發表評分。每篇文章都有一個id和一個分數。我正在嘗試查詢MongoDB以查找熱門帖子。我希望通過按帖子發佈時的排序來完成此操作,取最近的100個,然後按分數排序這100個。 Post是帶有_id和分數的貓鼬綱要。我曾嘗試過:MongoDB按多個字段排序

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

您可以使用aggregate執行多個排序階段:

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