#mongodb-query #aggregation-framework #mongodb-indexes
Вопрос:
У меня есть динамическая схема в mongodb для различных шаблонов рабочих процессов. С каждым шаблоном рабочего процесса связаны атрибуты данных, которые хранятся в обычном режиме lt;key,valuegt;
{ _id : "1" data : { team_id : "ABC", template_id : "retail_sales", recorded_at : "", billing_state : "KA", pin_code : "50001" } } { _id : 2 data : { team_id : "ABC", template_id : "simple_crm", recorded_at : "", status : "NEW", loan_amount : 10000 } }
Я понимаю, что в 4.2 есть индекс подстановочных знаков, который я хотел использовать для агрегированных запросов. Был создан полный индекс подстановочных знаков документа, как показано ниже
{ "$data.**" : 1 }
При выполнении запроса я вижу, что используется индекс.
db.getCollection("view_status_dashboard").aggregate( [ { "$match" : { "data.team_id" : "ABC", "data.template_id" : "retail_sales" } } }, { $project : { _id : 0, data: 1 } } ])
Однако проекция выполняет вызов «ВЫБОРКИ», который увеличивает объем памяти.
Как я могу гарантировать, что моя проекция также подпадает под индекс подстановочных знаков mongo, чтобы использование памяти было ограничено?