Источник: Nuances of Programming
Предыдущая часть: “MongoDB: cортировка документов”
Индексы поддерживают эффективное выполнение запросов. Без них MongoDB сканировала бы каждый документ коллекции, отбирая нужные в соответствии с инструкцией запроса. Такое сканирование малоэффективно и предполагает обработку больших объемов данных.
Индексы — это специальные структуры данных, которые хранят небольшой фрагмент набора данных в удобном для просмотра формате. Индекс хранит значение конкретного поля или набора полей, которое определяет порядок распределения этих полей.
Метод createIndex()
Метод createIndex() создает индекс.
Синтаксис
Ниже представлен основной синтаксис метода 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})
>
Данный метод также принимает следующий список параметров, которые являются необязательными:
Метод dropIndex()
Метод dropIndex() удаляет конкретный индекс.
Синтаксис
Основной синтаксис 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"
}
]
>
Читайте также: