Collection::createIndex
(No version information available, might only be in Git)
Collection::createIndex — Создает индекс для коллекции
Описание
$index_name
, string $index_desc_json
) : voidСоздает индекс для коллекции.
Выдается исключение, если индекс с таким именем уже существует, или если определение индекса сформировано неправильно.
Список параметров
-
index_name
-
Имя индекса, который нужно создать. Должно быть корректным именем индекса, допустимым для SQL-запроса
CREATE INDEX
. -
index_desc_json
-
Определение индекса для создания. Содержит массив объектов IndexField, и каждый объект описывает один элемент документа для добавления в индекс, а также необязательную строку для типа индекса, который может быть INDEX (по умолчанию) или SPATIAL.
Одно описание IndexField состоит из следующих полей:
-
field
: строка, полный путь документа к элементу документа или полю для индексации. -
type
: строка, один из поддерживаемых типов столбцов SQL для сопоставления поля. Для числовых типов может быть добавлено необязательное ключевое слово UNSIGNED. Для типа TEXT может быть добавлена длина, учитываемая для индексации. -
required
: булево, (необязательное) true, если поле должно быть обязательным в документе. По умолчанию используется значениеfalse
, за исключением типаGEOJSON
, где по умолчанию используется значениеtrue
. -
options
: целое число, (необязательное) флаги специальных опций для использования при декодировании данныхGEOJSON
. -
srid
: целое число, (необязательное) значение srid для использования при декодировании данныхGEOJSON
.
Ошибочно включать другие поля, не описанные выше, в документы IndexDefinition или IndexField.
-
Возвращаемые значения
Примеры
Пример #1 Пример использования mysql_xdevapi\Collection::createIndex()
<?php
$session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
$session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
$session->sql("CREATE DATABASE addressbook")->execute();
$schema = $session->getSchema("addressbook");
$collection = $schema->createCollection("people");
// Создание текстового индекса
$collection->createIndex(
'myindex1',
'{"fields": [{
"field": "$.name",
"type": "TEXT(25)",
"required": true}],
"unique": false}'
);
// Пространственный индекс
$collection->createIndex(
'myindex2',
'{"fields": [{
"field": "$.home",
"type": "GEOJSON",
"required": true}],
"type": "SPATIAL"}'
);
// Индекс с несколькими полями
$collection->createIndex(
'myindex3',
'{"fields": [
{
"field": "$.name",
"type": "TEXT(20)",
"required": true
},
{
"field": "$.age",
"type": "INTEGER"
},
{
"field": "$.job",
"type": "TEXT(30)",
"required": false
}
],
"unique": true
}'
);