Что такое Wildcard Index
Wildcard index в MongoDB — это специальный тип индекса, который автоматически индексирует все поля в документе или целевое подмножество полей, соответствующих определённому шаблону. Он создаётся с использованием синтаксиса $**:
db.collection.createIndex({ "$**": 1 })
Ключевые характеристики
- Индексирует все поля в документе автоматически, включая вложенные поля
- Может быть ограничен конкретным путём поля с помощью целевого wildcard, например
{ "metadata.$**": 1 }
- Использует
wildcardProjection для включения или исключения конкретных полей из индекса
Когда использовать Wildcard Index
Wildcard-индексы наиболее полезны в следующих сценариях:
- Документы имеют динамическую или непредсказуемую структуру полей, где поля различаются от документа к документу
- Паттерны запросов неизвестны заранее, и создавать отдельные индексы нецелесообразно
- Ты работаешь с пользовательскими атрибутами или полями метаданных, которые отличаются для каждой записи
- Приложения обрабатывают полуструктурированные данные из внешних источников с непоследовательной схемой
Важные замечания
- Wildcard-индексы не являются заменой точечных, хорошо спланированных индексов в приложениях, где важна производительность
- Они могут потреблять значительно больше места на диске по сравнению с индексами по одному полю
- Они не поддерживают некоторые типы индексов, такие как составные индексы, текстовые индексы или TTL-индексы
- Лучше всего подходят для разведочных запросов или ранних стадий разработки, пока паттерны запросов ещё не устоялись