(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_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.
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
}'
);