Collection::createIndex

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

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

Beschreibung

public function 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
}'
);
+add a note

User Contributed Notes

There are no user contributed notes for this page.