(No version information available, might only be in Git)
Collection::createIndex — Créer un index de collection
Cré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_json
La 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.
unique
: booléen, (facultatif) true si le champ doit être éxisté 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
}'
);