Collection::createIndex
(No version information available, might only be in Git)
Collection::createIndex — Cria índice na coleção
Descriçã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.
Parâmetros
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 paraGEOJSON
onde o padrão étrue
. -
options
: inteiro, (opcional) opções especiais para uso durante a decodificação de dadosGEOJSON
. -
srid
: inteiro, (opcional) valor srid para uso durante a decodificação de dadosGEOJSON
.
É um erro incluir outros campos não descritos acima em documentos IndexDefinition ou IndexField.
-
Valor Retornado
Exemplos
Example #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
}'
);