English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Индекс поддерживает эффективное разрешение запросов. Без индекса MongoDB должен сканировать каждый документ в наборе, чтобы выбрать документ, соответствующий запросу. Это сканирование очень медленно и требует от MongoDB обработки большого объема данных.
Индекс - это особая структура данных, которая хранит малую часть набора данных в удобочитаемом виде. Индекс хранит значения определенного поля или набора полей, отсортированные по значению поля, указанному в индексе.
Для создания индекса необходимо использовать метод createIndex() MongoDB.
createIndex()Основная грамматика метода ()
>db.COLLECTION_NAME.createIndex({KEY:1})
Здесь, KEY - это имя поля, на котором нужно создать индекс, 1 означает возрастание. Для создания индекса по убыванию используйте -1.
>db.mycol.createIndex({"title":1}) { "createdCollectionAutomatically": false, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 } >
ВcreateIndex()В методе, вы можете передать несколько полей для создания индекса на нескольких полях.
>db.mycol.createIndex({"title":1,"description":-1}) >
Метод createIndex() принимает опциональные параметры, список опциональных параметров приведен ниже:
Параметры | Тип | Описание |
---|---|---|
background | Boolean | Процесс создания индекса блокирует другие операции базы данных, "background" позволяет создать индекс в фоновом режиме, то есть добавить "background" Опциональные параметры. "background" по умолчаниюfalse. |
unique | Boolean | Уникальность созданного индекса. Specify true для создания уникального индекса. По умолчаниюfalse. |
name | string | Имя индекса. Если не указано, MongoDB генерирует имя индекса, используя имя поля, связанного с индексом, и порядок сортировки. |
dropDups | Boolean | версия 3.0+ устарела.При создании уникального индекса, следует ли удалять дублирующиеся записи, specify true для создания уникального индекса. По умолчанию false. |
sparse | Boolean | Не включать индекс для отсутствующих данных в документе; Этот параметр необходимо特别注意, если он установлен в true,则在 индексных полях не будут запрашиваться документы, не содержащие соответствующего поля. Значение по умолчанию - false. |
expireAfterSeconds | integer | Укажите значение в секундах, чтобы определить TTL, установить время жизни набора. |
v | версия индекса | Версия индекса. Версия индекса по умолчанию зависит от версии mongod,运行的 версии при создании индекса. |
weights | document | Значение веса индекса, числовое значение в диапазоне от 1 до 99,999, представляющее вес индекса по отношению к другим индексным полям. |
default_language | string | Для текстовых индексов этот параметр определяет список правил для停листков и морфологической обработки корней и стеблей. По умолчанию это английский. |
language_override | string | Для текстовых индексов этот параметр указывает имя поля, содержащегося в документе,language_override по умолчаниюlanguage, значение по умолчанию - language. |
Вы можете использовать метод dropIndex() MongoDB для удаления конкретного индекса.
Основная грамматика метода DropIndex() такая ()。
>db.COLLECTION_NAME.dropIndex({KEY: 1})
Здесь key - это имя файла, на котором вы хотите создать индекс, а 1 означает возрастание. Для создания индекса по убыванию вам нужно использовать -1.
>db.mycol.dropIndex({"title": 1}) { "ok": 0, "errmsg": "can't find index with key: { title: 1.0 }", "code": 27, "codeName": "IndexNotFound" }
Этот метод удаляет несколько (определенных) индексов из набора.
Основная грамматика метода DropIndexes() такая (-)
>db.COLLECTION_NAME.dropIndexes()
Предположим, что мы создали 2 индекса в наборе с именем mycol, как показано ниже:
> db.mycol.createIndex({"title":1,"description":-1})
Ниже приведен пример удаления индекса mycol, созданного ранее:
>db.mycol.dropIndexes({"title": 1, "description": -1}) {"nIndexesWas": 2, "ok": 1} >
Этот метод возвращает описание всех индексов в наборе.
Ниже приведен базовый синтаксис метода getIndexes() -
db.COLLECTION_NAME.getIndexes()
Предположим, что мы создали 2 индекса в именованном наборе mycol, как показано ниже -
> db.mycol.createIndex({"title":1,"description":-1})
Ниже приведен пример поиска всех индексов в наборе mycol -
> db.mycol.getIndexes() [ { "v": 2, "key": { "_id": 1 } "name": "_id_", "ns": "test.mycol" } { "v": 2, "key": { "title": 1, "description": -1 } "name": "title_1_description_-1", "ns": "test.mycol" } ] >