Помимо возврата отфильтрованного набора документов конечному пользователю через представление Mongo, у меня также есть пара функций, выполняющихся для генерации промежуточных итогов. По какой-то причине, хотя моя find()
операция действительно быстрая (225 мс), эта дополнительная агрегация, которую я выполняю, занимает более 6 секунд, что замедляет всю конечную точку, потому что эти данные передаются в том, что я ' м возвращаюсь.
Я пытаюсь понять, почему эта агрегация будет такой медленной? Эта агрегация соответствует фильтрам, переданным конечным пользователем, и затем вычисляет количество уникальных идентификаторов клиентов, которые появляются в возвращенных документах. Вот как это выглядит:
let totalCustomers = await db
.collection("view_accounts_report")
.aggregate([{
$match: search
},
{
$group: {
_id: null,
customers: {
$addToSet: "$customer._id"
}
}
},
{
$project: {
uniqueCustomers: {
$size: "$customers"
}
}
}
])
.next();
Почему это займет 6 секунд? Есть идеи? Любые советы о том, как я могу ускорить это?