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 появляется в документе только после завершения поиска, а данные не находятся в документе для началас, не похоже, что было бы возможно проиндексировать это так.Тем не менее мне интересно узнать, правда ли это.
Если, как подозревается, невозможно создать индекс в документе для покрытия запроса, то есть ли альтернатива?Кажется, что индексация вторичной коллекции также не будет полезна, так как операция поиска происходит после того, как поиск выполнен, поэтому данные в этом смысле уже являются частью родительского документа.