Эта глава знакомит с индексами 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" )