(No version information available, might only be in Git)
Collection::createIndex â Erzeugt einen Index fĂźr die Sammlung
$index_name, string $index_desc_json): voidErzeugt 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
}'
);