首页 > 解决方案 > MongoDB 查找性能

问题描述

我想知道这段代码之间是否有区别:

    return await _post
        .aggregate([
            {
                $match: filters
            },
            {
                $addFields: {
                    totalLikes: { "$size": "$likes" },
                    totalComments: { "$size": "$comments" },
                }
            },
            {
                $sort: sort
            },
            {
                $skip: skips
            },
            {
                $limit: pageSize
            },
            {
                $lookup: {
                    from: _comment.collection.name,
                    localField: 'comments',
                    foreignField: '_id',
                    as: 'comments',
                },
            },

        ])
};

和这个

   return await _post
        .aggregate([
            {
                $lookup: {
                    from: _comment.collection.name,
                    localField: 'comments',
                    foreignField: '_id',
                    as: 'comments',
                },
            },
            {
                $addFields: {
                    totalLikes: { "$size": "$likes" },
                    totalComments: { "$size": "$comments" },
                }
            },
            {
                $match: filters
            },
            {
                $sort: sort
            },
            {
                $skip: skips
            },
            {
                $limit: pageSize
            },
        ])
};

我的问题基本上是,查找总是在所有文档上完成,或者如果我先应用过滤器,它只应用于过滤后的文件?还有另一种提高性能的方法吗?谢谢!

标签: mongodbperformanceaggregation-framework

解决方案


推荐阅读