Индексы подстановочных знаков MongoDB — Как покрыть проекцию индексом

#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, чтобы использование памяти было ограничено?