# Collection::createIndex

(No version information available, might only be in Git)

Collection::createIndex — Erzeugt einen Index für die Sammlung

### Beschreibung

public mysql_xdevapi\Collection::createIndex(string `$index_name`, string `$index_desc_json`): void

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.

### Parameter-Liste

`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_json`

  Die 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.

### Rückgabewerte

### Beispiele

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
}'
);`
`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open