MongoDB - Индексирование

Индексы поддерживают эффективное разрешение запросов. Без индексов MongoDB должен сканировать каждый документ коллекции, чтобы выбрать те документы, которые соответствуют запросу запроса. Это сканирование крайне неэффективно и требует от MongoDB обработки большого объема данных.

Индексы - это специальные структуры данных, которые хранят небольшую часть набора данных в удобной для просмотра форме. В индексе хранится значение определенного поля или набора полей, упорядоченных по значению поля, как указано в индексе.

Метод createIndex ()

Чтобы создать индекс, вам нужно использовать метод createIndex () MongoDB.

Синтаксис

Базовый синтаксис createIndex() метод выглядит следующим образом ().

>db.COLLECTION_NAME.createIndex({KEY:1})

Здесь ключ - это имя поля, для которого вы хотите создать индекс, а 1 - для возрастания. Чтобы создать индекс в порядке убывания, вам нужно использовать -1.

пример

>db.mycol.createIndex({"title":1})
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}
>

В createIndex() вы можете передать несколько полей, чтобы создать индекс для нескольких полей.

>db.mycol.createIndex({"title":1,"description":-1})
>

Этот метод также принимает список опций (которые не являются обязательными). Ниже приводится список -

Параметр Тип Описание
задний план Булево Создает индекс в фоновом режиме, чтобы создание индекса не блокировало другие действия базы данных. Укажите true для построения в фоновом режиме. Значение по умолчанию -false.
уникальный Булево Создает уникальный индекс, чтобы коллекция не принимала вставку документов, в которых индексный ключ или ключи совпадают с существующим значением в индексе. Укажите true, чтобы создать уникальный индекс. Значение по умолчанию -false.
имя строка Имя индекса. Если не указано иное, MongoDB генерирует имя индекса, объединяя имена проиндексированных полей и порядок сортировки.
редкий Булево Если true, индекс ссылается только на документы с указанным полем. Эти индексы занимают меньше места, но в некоторых ситуациях (особенно при сортировке) ведут себя иначе. Значение по умолчанию -false.
expireAfterSeconds целое число Задает значение в секундах в качестве TTL, чтобы контролировать, как долго MongoDB хранит документы в этой коллекции.
веса документ Вес представляет собой число от 1 до 99 999 и обозначает значимость поля по сравнению с другими индексированными полями с точки зрения оценки.
язык по умолчанию строка Для текстового индекса - язык, определяющий список стоп-слов и правила для стеммера и токенизатора. Значение по умолчанию -English.
language_override строка Для текстового индекса укажите имя поля в документе, которое содержит язык, который будет заменять язык по умолчанию. Значение по умолчанию - язык.

Метод dropIndex ()

Вы можете удалить определенный индекс с помощью метода dropIndex () MongoDB.

Синтаксис

Базовый синтаксис метода DropIndex () следующий ().

>db.COLLECTION_NAME.dropIndex({KEY:1})

Здесь ключ - это имя файла, для которого вы хотите создать индекс, а 1 - для возрастания. Чтобы создать индекс в порядке убывания, вам нужно использовать -1.

пример

> db.mycol.dropIndex({"title":1})
{
	"ok" : 0,
	"errmsg" : "can't find index with key: { title: 1.0 }",
	"code" : 27,
	"codeName" : "IndexNotFound"
}

Метод dropIndexes ()

Этот метод удаляет несколько (указанных) индексов в коллекции.

Синтаксис

Основной синтаксис метода 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 ()

Этот метод возвращает описание всех индексов в коллекции.

Синтаксис

Ниже приведен основной синтаксис метода 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"
	}
]
>