Créer un index de collection

# 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
      }'
    );

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open