如何使用Node.js按其内部数组大小对数组进行排序?

时间:2019-01-01 19:23:53

标签: javascript node.js mongodb mongoose

每个人。我对这个后端事物很陌生,并且我开始弄清楚基础知识。 我制作了一个关于NodeJS和猫鼬的帖子和评论的基本系统。 现在,我想获得评论最多的帖子,以便在主页上显示最受欢迎的帖子。

我想返回评论ID最多的帖子。

我首先尝试这样做:




但是它只是按字母顺序返回注释。

非常感谢您的帮助,对不起我的英语不好。

1 个答案:

答案 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
        });
});