Эта глава знакомит с индексами MongoDB. Как и в MYSQL, MongoDB также поддерживает индексы. Отличие заключается в том, что MongoDB позволяет добавлять индексы к любому вложенному полю структуры JSON с той же целью улучшения эффективности запросов.
Типы индексов в MongoDB
Индекс по одному полю
Аналогично MYSQL, создание индекса для одного поля
Формат:
db.collection.createIndex( { имя_поля: направление_сортировки(1 или -1) } )
Примечание: Направление сортировки 1 представляет собой по возрастанию, а -1 - по убыванию.
Пример 1:
db.records.createIndex( { score: 1 } )
Создает индекс для поля score.
Пример 2:
db.records.createIndex( { "location.state": 1 } )
Создает индекс для вложенного поля JSON location.state.
Составной индекс
Аналогично MYSQL, несколько полей могут быть объединены для создания индекса, ускоряющего скорость составных запросов.
Формат:
db.collection.createIndex( { <поле1>: <тип>, <поле2>: <тип2>, ... } )
Пример:
db.products.createIndex( { "item": 1, "stock": 1 } )
Создает составной индекс для полей item и stock, оба по возрастанию (1 представляет собой по возрастанию).
Текстовый индекс (полнотекстовый индекс)
Текстовый индекс (text) в основном используется для поддержки полнотекстового поиска.
Примечание: Коллекция позволяет только один текстовый индекс, но текстовый индекс может включать несколько полей.
Пример:
db.stores.createIndex( { name: "text", description: "text" } )
Создает полнотекстовый текстовый индекс для полей name и description.
Примечание: За деталями обращайтесь к разделу Full Text Index section (раздел о полнотекстовом индексе).
Пространственный индекс (GEO-индекс)
В основном используется для поддержки запросов, связанных с географической информацией, в основном поддерживает два типа индекса: 2dsphere и 2d. За деталями обращайтесь к разделу Geospatial Query section (раздел о запросах геопространственного моделирования).
Удаление индексов
Для перечисления всех индексов в коллекции:
db.pets.getIndexes()
Для удаления индекса catIdx из коллекции pets:
db.pets.dropIndex( "catIdx" )