PHPCon Poland 2024

Collection::createIndex

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

Collection::createIndexErzeugt 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
}'
);
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top