(No version information available, might only be in Git)
Collection::createIndex — Cria índice na coleção
Cria um índice na coleção.
Uma exceção é lançada se um índice com o mesmo nome já existir, ou se a definição do índice não estiver formada corretamente.
index_name
O nome do índice a ser criado. O nome precisa ser válid da mesma forma que os nomes
aceitos pela consulta SQL CREATE INDEX
.
index_desc_json
Definição do índice a ser criado. Contém um array de objetos IndexField, e cada objeto descreve um único documento membro para incluir no índice e uma string opcional para o tipo de índice, que pode ser INDEX (padrão) ou SPATIAL.
Uma descrição de um único IndexField consiste nos campos a seguir:
field
: string, o caminho completo para o documento membro ou campo a ser indexado.
type
: string, um dos tipos de coluna suportados pelo SQL para mapear o campo.
Para tipos numéricos, a palavra-chave opcional UNSIGNED pode ser incluída na sequência.
Para o tipo TEXT, o comprimento a considerar para a indexação pode ser incluído.
required
: booleano, (opcional) TRUE se for necessário que o campo exista no documento.
O padrão é false
, exceto para GEOJSON
onde o padrão é true
.
options
: inteiro, (opcional) opções especiais para uso
durante a decodificação de dados GEOJSON
.
srid
: inteiro, (opcional) valor srid para uso durante
a decodificação de dados GEOJSON
.
É um erro incluir outros campos não descritos acima em documentos IndexDefinition ou IndexField.
Exemplo #1 Exemplo 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");
// Criando um índice de texto
$collection->createIndex(
'myindex1',
'{"fields": [{
"field": "$.name",
"type": "TEXT(25)",
"required": true}],
"unique": false}'
);
// Um índice espacial
$collection->createIndex(
'myindex2',
'{"fields": [{
"field": "$.home",
"type": "GEOJSON",
"required": true}],
"type": "SPATIAL"}'
);
// Índice com múltiplos 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
}'
);