English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основное руководство по MongoDB

Дополнительное руководство по MongoDB

Индексация MongoDB

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

Метод createIndex()

Для создания индекса необходимо использовать метод 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() принимает опциональные параметры, список опциональных параметров приведен ниже:

ПараметрыТипОписание
backgroundBooleanПроцесс создания индекса блокирует другие операции базы данных, "background" позволяет создать индекс в фоновом режиме, то есть добавить "background"   Опциональные параметры. "background" по умолчаниюfalse.
uniqueBooleanУникальность созданного индекса. Specify true для создания уникального индекса. По умолчаниюfalse.
namestringИмя индекса. Если не указано, MongoDB генерирует имя индекса, используя имя поля, связанного с индексом, и порядок сортировки.
dropDupsBooleanверсия 3.0+ устарела.При создании уникального индекса, следует ли удалять дублирующиеся записи, specify true для создания уникального индекса. По умолчанию false.
sparseBooleanНе включать индекс для отсутствующих данных в документе; Этот параметр необходимо特别注意, если он установлен в true,则在 индексных полях не будут запрашиваться документы, не содержащие соответствующего поля. Значение по умолчанию - false.
expireAfterSecondsintegerУкажите значение в секундах, чтобы определить TTL, установить время жизни набора.
vверсия индексаВерсия индекса. Версия индекса по умолчанию зависит от версии mongod,运行的 версии при создании индекса.
weightsdocumentЗначение веса индекса, числовое значение в диапазоне от 1 до 99,999, представляющее вес индекса по отношению к другим индексным полям.
default_languagestringДля текстовых индексов этот параметр определяет список правил для停листков и морфологической обработки корней и стеблей. По умолчанию это английский.
language_overridestringДля текстовых индексов этот параметр указывает имя поля, содержащегося в документе,language_override по умолчаниюlanguage, значение по умолчанию - language.

метод dropIndex()

Вы можете использовать метод 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()

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

Синтаксис

Основная грамматика метода 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"
	}
]
>