(No version information available, might only be in Git)
Collection::createIndex — Créer un index de collection
$index_name, string $index_desc_json): voidCréer un index sur la collection.
Une exception est lancée si un index portant le même nom existe déjà, ou si la définition de l'index n'est pas correctement formée.
index_name
Le nom de l'index à créer. Ce nom doit être un nom d'index valide tel que
accepté par la requête SQL CREATE INDEX.
index_desc_jsonLa définition de l'index à créer. Elle contient un tableau d'objets IndexField, et chaque objet décrit un seul membre de document à inclure dans l'index, et une chaîne facultative pour le type d'index qui pourrait être INDEX (par défaut) ou SPATIAL.
Une description IndexField unique se compose des champs suivants :
field: chaîne, le chemin complet du document vers le membre du document ou le champ à indexer.
type: chaîne, l'un des types de colonnes SQL pris en charge pour mapper le champ.
Pour les types numériques, le mot-clé facultatif UNSIGNED peut suivre.
Pour le type TEXT, la longueur à considérer pour l'indexation peut être ajoutée.
required: booléen, (facultatif) true si le champ doit exister dans le document.
Par défaut à false, sauf pour GEOJSON où il est par défaut à true.
options: entier, (facultatif) drapeaux d'options spéciaux à utiliser
lors du décodage de données GEOJSON.
srid: entier, (facultatif) valeur srid à utiliser lors
du décodage de données GEOJSON.
C'est une erreur d'inclure d'autres champs non décrits ci-dessus dans les documents IndexDefinition ou IndexField.
Exemple #1 Exemple de mysql_xdevapi\Collection::createIndex()
<?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");
// Créer un index de texte
$collection->createIndex(
'myindex1',
'{"fields": [{
"field": "$.name",
"type": "TEXT(25)",
"required": true}],
"unique": false}'
);
// Un index spatial
$collection->createIndex(
'myindex2',
'{"fields": [{
"field": "$.home",
"type": "GEOJSON",
"required": true}],
"type": "SPATIAL"}'
);
// Index avec plusieurs champs
$collection->createIndex(
'myindex3',
'{"fields": [
{
"field": "$.name",
"type": "TEXT(20)",
"required": true
},
{
"field": "$.age",
"type": "INTEGER"
},
{
"field": "$.job",
"type": "TEXT(30)",
"required": false
}
],
"unique": true
}'
);