通过聚合MongoDB进行计数

时间:2020-04-28 20:02:15

标签: mongodb

我正在用mongodb构建复杂的查询,它需要在匹配查询之前设置要设置的其他文档,它可以与聚合完美配合,但是问题是我还需要计算与包含该预设字段的查询匹配的文档。但常规Model.countDocuments(query)不能访问查询中的该字段,因为它不存在于数据库中,另一方面,我只能使用简单的聚合来匹配该查询并获取其长度,但这样的内存效率不高,我无法说这是否会节省时间,所以我需要某种计数方法,该方法返回数字,使用聚合并且速度很快(至少不慢)。这是我当前的管道

    instance = await Model.aggregate([
        {
            $lookup: {
                from: 'collection',
                localField: 'localField',
                foreignField: 'foreignField',
                as: 'myField'
            }
        },
        {
            $unwind: "$myField"
        },
        {
            $set: {
                someField: EXPRESSION
            }
        },
        {
            $match: queryBuilder
        },
        {
            $sort: sortBuilder
        },
        {
            $project: $project
        },
        {
            $skip: skip
        },
        {
            $limit: limit
        }
    ]); 

就像我说的那样,它很有效,但是

    let totalDocs = await Model.countDocuments(queryBuilder);

这不是因为queryBuilder包含"someField",所以有一种方法可以某种方式访问​​“ someField”或将count与聚合一起使用

0 个答案:

没有答案