Collection::createIndex

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

Collection::createIndexCréer un index de collection

Description

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

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

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.
To Top