(No version information available, might only be in Git)
Collection::createIndex — Crear un índice de colección
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.
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.
Ejemplo #1 Ejemplo 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");
// 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
}'
);