每个人。我对这个后端事物很陌生,并且我开始弄清楚基础知识。 我制作了一个关于NodeJS和猫鼬的帖子和评论的基本系统。 现在,我想获得评论最多的帖子,以便在主页上显示最受欢迎的帖子。
我想返回评论ID最多的帖子。
我首先尝试这样做:
但是它只是按字母顺序返回注释。
非常感谢您的帮助,对不起我的英语不好。
答案 0 :(得分:1)
您需要使用Aggregation Framework和$size运算符来使用$addFields创建临时字段,然后可以使用$sort对该字段进行排序(-1
表示降序)< / p>
Post.aggregate([
{
$addFields: {
commentsCount: { $size: "$comments" }
}
},
{
$sort: { commentsCount: -1 }
}
]).exec( (err, posts)=>{
if(err) {
return res.status(400).json({
ok: false,
message: 'Error loading posts',
});
}
return res.status(200).json({
ok: true,
posts: posts
});
});