MongoDB: метод db.collection.createIndex ()
db.collection.createIndex
Метод db.collection.createIndex () используется для построения индекса коллекции.
Синтаксис:
db.collection.createIndex (ключи, опции)
Параметры:
название | Описание | Необходимые / Необязательный | Тип |
---|---|---|---|
ключи | Документ, который содержит пары полей и значений, где поле является ключом индекса, а значение описывает тип индекса для этого поля. Для восходящего индекса в поле укажите значение 1; для нисходящего индекса укажите значение -1. MongoDB поддерживает несколько различных типов индексов, включая текстовые, геопространственные и хешированные индексы. См. Типы индексов для получения дополнительной информации. | необходимые | документ |
опции | Документ, содержащий набор параметров, управляющих созданием индекса. | Необязательный | документ |
Опции
Следующие параметры доступны для всех типов индексов, если не указано иное:
поле | Тип | Описание |
---|---|---|
фон | логический | Необязательный. Создает индекс в фоновом режиме, чтобы создание индекса не блокировало другие действия базы данных. Укажите true для построения в фоновом режиме. Значение по умолчанию неверно. |
уникальный | логический | Необязательный. Создает уникальный индекс, чтобы коллекция не принимала вставку документов, в которых ключ или ключи индекса соответствуют существующему значению в индексе. Укажите true, чтобы создать уникальный индекс. Значение по умолчанию неверно. |
название | строка | Необязательный. Название индекса. Если не указано, MongoDB генерирует имя индекса путем объединения имен индексированных полей и порядка сортировки. Независимо от того, задан ли пользователь или сгенерирован MongoDB, имена индексов, включая их полное пространство имен (т. Е. Database.collection), не могут быть длиннее, чем предел имени индекса. |
редкий | логический | Необязательный. Если true, индекс ссылается только на документы с указанным полем. Эти индексы занимают меньше места, но ведут себя по-разному в некоторых ситуациях (особенно при сортировке). Значение по умолчанию неверно. См. Разреженные индексы для получения дополнительной информации. |
expireAfterSeconds | целое число | Необязательный. Задает значение в секундах в виде TTL для управления продолжительностью хранения документов в этой коллекции MongoDB. Посмотрите Истечение данных из Коллекций, Установив TTL для получения дополнительной информации об этой функциональности. Это относится только к индексам TTL. |
v | индекс версии | Необязательный. Номер версии индекса. Версия индекса по умолчанию зависит от версии mongod, работающей при создании индекса. До версии 2.0 это значение было 0; версии 2.0 и более поздние используют версию 1, которая обеспечивает меньший и более быстрый индексный формат. Укажите другую версию индекса только в необычных ситуациях. |
storageEngine | документ | Необязательный. Позволяет пользователям указывать конфигурацию для механизма хранения на основе индекса при создании индекса. Значение параметра storageEngine должно иметь следующий вид: {<имя-механизма-хранилища>: <параметры>} Конфигурация механизма хранения, указанная при создании индексов, проверяется и регистрируется в журнале операций во время репликации для поддержки наборов реплик с элементами, которые используют разные двигатели хранения. |
Образец документа в коллекции ресторанов:
{
"address": {
"building": "1007",
"coord": [ -73.856077, 40.848447 ],
"street": "Morris Park Ave",
"zipcode": "10462"
},
"borough": "Bronx",
"cuisine": "Bakery",
"grades": [
{ "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 },
{ "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 },
{ "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 },
{ "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 },
{ "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 }
],
"name": "Morris Park Bake Shop",
"restaurant_id": "30075445"
}
......
Пример: создание восходящего индекса в одном поле
В следующем примере создается восходящий индекс на поле кухни.
> db.restaurants.createIndex( { "cuisine": 1 } );
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
Пример: создание индекса для нескольких полей
В следующем примере создается составной индекс для поля кухни (в порядке возрастания) и поля почтового индекса (в порядке убывания).
> db.restaurants.createIndex( { "cuisine": 1 , "address.zipcode": -1 } );
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
Получить данные о ресторанах здесь
Поведение
Метод createIndex () имеет поведение, описанное здесь.
- Чтобы добавить или изменить параметры индекса, вы должны удалить индекс с помощью метода dropIndex () и выполнить другую операцию createIndex () с новыми параметрами.
Если вы создаете индекс с одним набором параметров, а затем запускаете метод createIndex () с теми же полями индекса и различными параметрами без предварительного удаления индекса, createIndex () не будет перестраивать существующий индекс с новыми параметрами. - Если вы вызываете несколько методов createIndex () с одной и той же спецификацией индекса в одно и то же время, только первая операция будет выполнена успешно, все остальные операции не будут иметь никакого эффекта.
- Не фоновые операции индексации блокируют все остальные операции в базе данных.
- MongoDB не будет создавать индекс для коллекции, если запись индекса для существующего документа превышает максимальную длину ключа индекса.
Предыдущий: метод db.collection.count ()
Далее: метод db.collection.dataSize ()
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code