MongoDB Lookup - индекс встроенного массива - PullRequest
0 голосов
/ 15 декабря 2018

MongoDB позволяет индексировать массивы вложенных документов, как описано здесь:

Индексировать массивы со встроенными документами

Является ли эта информация действительной, когда массив вложенных документов существует только впроекция документа после выполнения поиска $?

Возьмем эту схему, например:

cats collection
{
  _id: 1,
  name: "betty"
}
{
  _id: 2,
  name: "britches"
}
{
  _id: 3,
  name: "bailey"
}

catToys collection
{
  _id: 1,
  name: "mouse",
  toyType: 1
  catId: 1
}
{
  _id: 2,
  name: "yarn",
  toyType: 2
  catId: 1
}
{
  _id: 3,
  name: "feather",
  toyType: 2
  catId: 3
}

Запрос выполняет поиск по catToys на основе catId и вставляет коллекцию catToys какполе массива в документе cat.Я хотел бы создать индекс для toyType.На основании информации о статье, указанной выше, потенциальный индекс будет выглядеть следующим образом:

{ "catToys.toyType": 1 }

Поскольку catToys появляется в документе только после завершения поиска, а данные не находятся в документе для началас, не похоже, что было бы возможно проиндексировать это так.Тем не менее мне интересно узнать, правда ли это.

Если, как подозревается, невозможно создать индекс в документе для покрытия запроса, то есть ли альтернатива?Кажется, что индексация вторичной коллекции также не будет полезна, так как операция поиска происходит после того, как поиск выполнен, поэтому данные в этом смысле уже являются частью родительского документа.

...