(No version information available, might only be in Git)
Collection::createIndex — Erzeugt einen Index für die Sammlung
Erzeugt einen Index für die Sammlung.
Wenn bereits ein Index mit dem angegebenen Namen existiert oder wenn der Index falsch definiert ist, wird eine Exception ausgelöst.
index_name
      Der Name des Indexes, der erstellt werden soll. Dieser Name muss ein
      gültiger Indexname sein, der von der SQL-Anweisung
      CREATE INDEX akzeptiert wird.
     
index_desc_jsonDie Definition des zu erstellenden Indexes. Er enthält ein Array von IndexField-Objekten, wobei jedes Objekt ein einzelnes Dokument beschreibt, das in den Index aufgenommen werden soll, sowie eine optionale Zeichenkette für den Typ des Index, der INDEX (Standard) oder SPATIAL sein kann.
Eine einzelne IndexField-Beschreibung besteht aus den folgenden Feldern:
        field: Zeichenkette; der vollständige Pfad zum zu
        indizierenden Dokument oder Feld.
       
        type: Zeichenkette; einer der unterstützten
        SQL-Spaltentypen, dem das Feld zugeordnet werden soll. Bei numerischen
        Typen kann das optionale Schlüsselwort UNSIGNED folgen. Beim Typ TEXT
        kann die bei der Indizierung zu berücksichtigende Länge hinzugefügt
        werden.
       
        required: Boolean; (optional) true, wenn das Feld im
        Dokument vorhanden sein muss. Der Standardwert ist false, außer bei
        GEOJSON, wo standardmäßig true verwendet wird.
       
        options: Integer; (optional) spezielle Optionsflags, die
        beim Dekodieren von GEOJSON-Daten verwendet werden
        sollen.
       
        srid: Integer; (optional) der srid-Wert, der beim
        Dekodieren von GEOJSON-Daten verwendet werden soll.
       
Es ist nicht zulässig, andere, oben nicht beschriebene Felder in IndexDefinition- oder IndexField-Dokumente aufzunehmen.
Beispiel #1 mysql_xdevapi\Collection::createIndex()-Beispiel
<?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");
// Erstellen eines Textindexes
$collection->createIndex(
  'myindex1',
  '{"fields": [{
    "field": "$.name",
    "type": "TEXT(25)",
    "required": true}],
    "unique": false}'
);
// Ein räumlicher Index
$collection->createIndex(
  'myindex2',
  '{"fields": [{
    "field": "$.home",
    "type": "GEOJSON",
    "required": true}],
    "type": "SPATIAL"}'
);
// Ein Index mit mehreren Feldern
$collection->createIndex(
  'myindex3',
  '{"fields": [
    {
      "field": "$.name",
      "type": "TEXT(20)",
      "required": true
    },
    {
      "field": "$.age",
      "type": "INTEGER"
    },
    {
      "field": "$.job",
      "type": "TEXT(30)",
      "required": false
    }
  ],
  "unique": true
  }'
);