Documentación offline PHP master

Collection::createIndex

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

Collection::createIndex

Crear un índice de colección

Descripción#

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

Crear un índice en la colección.

Se lanza una excepción si ya existe un índice con el mismo nombre, o si la definición del índice no está correctamente formada.

## Parámetros

`index_name`  
El nombre del índice a crear. Este nombre debe ser un nombre de índice válido tal como aceptado por la consulta SQL `CREATE INDEX`.

`index_desc_json`  
La definición del índice a crear. Contiene un array de objetos IndexField, y cada objeto describe un solo miembro de documento a incluir en el índice, y una cadena opcional para el tipo de índice que podría ser INDEX (por omisión) o SPATIAL.

Una descripción única de IndexField se compone de los siguientes campos:

- `field`: string, la ruta completa del documento hacia el miembro del documento o el campo a indexar.

- `type`: string, uno de los tipos de columnas SQL admitidos para mapear el campo. Para los tipos numéricos, la palabra clave opcional UNSIGNED puede seguir. Para el tipo TEXT, la longitud a considerar para la indexación puede ser añadida.

- `unique`: bool, (opcional) true si el campo debe ser existente en el documento. Por omisión es `false`, excepto para `GEOJSON` donde por omisión es `true`.

- `options`: integer, (opcional) flags de opciones especiales a utilizar al decodificar datos `GEOJSON`.

- `srid`: integer, (opcional) valor srid a utilizar al decodificar datos `GEOJSON`.

Es un error incluir otros campos no descritos anteriormente en los documentos IndexDefinition o IndexField.

## Valores devueltos

## Ejemplos

Ejemplo de `mysql_xdevapi\Collection::createIndex`
sql("DROP DATABASE IF EXISTS addressbook")->execute(); $session->sql("CREATE DATABASE addressbook")->execute(); $schema = $session->getSchema("addressbook"); $collection = $schema->createCollection("people"); // Crear un índice de texto $collection->createIndex( 'myindex1', '{"fields": [{ "field": "$.name", "type": "TEXT(25)", "required": true}], "unique": false}' ); // Un índice espacial $collection->createIndex( 'myindex2', '{"fields": [{ "field": "$.home", "type": "GEOJSON", "required": true}], "type": "SPATIAL"}' ); // Índice con múltiples campos $collection->createIndex( 'myindex3', '{"fields": [ { "field": "$.name", "type": "TEXT(20)", "required": true }, { "field": "$.age", "type": "INTEGER" }, { "field": "$.job", "type": "TEXT(30)", "required": false } ], "unique": true }' ); ```php ?>