我正在用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与聚合一起使用