(No version information available, might only be in Git)
Collection::createIndex — Создаёт индекс для коллекции
Создаёт индекс для коллекции.
Выдаётся исключение, если индекс с таким именем уже существует, или если определение индекса сформировано неправильно.
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
  }'
);