Collection::createIndex

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

Collection::createIndex — CrĂ©er un index de collection

Description

public function mysql_xdevapi\Collection::createIndex(string $index_name, string $index_desc_json): void

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.

Liste de paramĂštres

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.

  • 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.

Valeurs de retour

Exemples

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
}'
);
add a note

User Contributed Notes

There are no user contributed notes for this page.