#node.js #mongodb
Вопрос:
Мы получаем данные от заявителя и сбора заявок. коллекция кандидатов содержит 19000 записей, а коллекция билетов — 10000 записей. Пожалуйста, предложите, как повысить производительность приведенного ниже запроса. Заранее спасибо.
totalData = await applicantObj.aggregate([
{
$match: findApplicantCriteria
},
{
$lookup: {
from: 'tickets',
let: { applicant_id: '$_id' },
pipeline: [
{
$match: {
$expr:
findCriteria
}
}
],
as: 'tickets'
}
},
{
$project: {
_id: 0,
id: "$_id",
name: "$F_First_name",
phoneNumber: "$F_R_Mobile_no",
email: "$F_Email_id",
crn: "$Reg_No",
generatedTickets: { $size: "$tickets" },
}
},
{
$match: { generatedTickets: { "$gt": 0 } }
},
{
$count: "total"
}
])
Комментарии:
1. Взгляните на план выполнения . Добавьте
{explain: true}
в свой конвейер агрегации.2. для поиска с конвейером с $ expr для использования индекса, который вам нужен> = Mongodb 5, создайте также индексы для файлов, которые вы используете в findCreateria