агрегированный запрос занимает много времени. Как мы можем повысить производительность

#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