Otimizar consultas usando índices
Nesta página
- Visão geral
- Aplicativo de amostra
- Índice de campo único
- Índice composto
- Multikey Index
- Índice Geoespacial
- índice único
- Índice curinga
- Índices clusterizados
- Text Index
- Listar índices
- Excluir um índice.
- Gerenciamento do índice do Atlas Search
- Criar Índice de Atlas Search
- Listar índices de pesquisa
- Atualizar índices de pesquisa
- Excluir índices Atlas Search
Visão geral
Nesta página, você pode ver exemplos de código copiáveis que mostram como gerenciar diferentes tipos de índices usando a Biblioteca PHP do MongoDB .
Dica
Para saber mais sobre como trabalhar com índices, consulte o guia Considerações sobre índices e gerenciamento . Para saber mais sobre qualquer um dos índices mostrados nesta página, consulte o link fornecido em cada seção.
Para usar um exemplo desta página, copie o exemplo de código noaplicação de amostra ou em seu próprio aplicação. Certifique-se de definir a variável de ambiente MONGODB_URI
para a string de conexão de sua implantação do MongoDB e substitua os espaços reservados <database>
e <collection>
por valores para seu namespace de destino.
Aplicativo de amostra
Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:
Verifique se a biblioteca PHP do MongoDB está instalada em seu projeto. Para saber mais sobre como instalar a biblioteca PHP do MongoDB , consulte o guia de download e instalação .
Copie o seguinte código e cole-o em um novo arquivo
.php
.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
1 2 3 require __DIR__ . '/../vendor/autoload.php'; 4 5 $uri = getenv('MONGODB_URI') ?: throw new RuntimeException('Set the MONGODB_URI variable to your Atlas URI that connects to the sample dataset'); 6 $client = new MongoDB\Client($uri); 7 8 $collection = $client->getCollection('<database>', '<collection>'); 9 10 // Start example code here 11 12 // End example code here
Alguns exemplos utilizam a função toJSON()
para representar eventos de alteração, que são documentos BSON, como Extended JSON. Para usar essa função, cole o seguinte código no arquivo do seu aplicação :
function toJSON(object $document): string { return MongoDB\BSON\Document::fromPHP($document)->toRelaxedExtendedJSON(); }
Índice de campo único
O exemplo seguinte cria um índice ascendente no campo especificado:
$indexName = $collection->createIndex(['<field name>' => 1]);
Para saber mais sobre índices de campo único, consulte o guia Índices de campo único .
Índice composto
O exemplo seguinte cria um índice composto de dois índices ascendentes nos campos especificados:
$indexName = $collection->createIndex( ['<field name 1>' => 1, '<field name 2>' => 1] );
Para saber mais sobre índices compostos, consulte o guia Índices compostos .
Multikey Index
O exemplo a seguir cria um índice de múltiplas chaves ascendente no campo com valor de array especificado:
$indexName = $collection->createIndex(['<array field name>' => 1]);
Para saber mais sobre índices de várias chaves, consulte o guia Índices de várias chaves.
Índice Geoespacial
O exemplo seguinte cria um índice dsphere 2no campo especificado que tem valores de objeto GeoJSON:
$indexName = $collection->createIndex( [ '<GeoJSON object field>' => '2dsphere'] );
Para saber mais sobre o tipo de dados GeoJSON, consulte Objetos GeoJSON no manual do MongoDB Server .
índice único
O exemplo seguinte cria um índice único ascendente no campo especificado:
$indexName = $collection->createIndex(['<field name>' => 1], ['unique' => true]);
Índice curinga
O exemplo seguinte cria um índice curinga ascendente na coleção:
$indexName = $collection->createIndex(['$**' => 1]);
Índices clusterizados
É possível criar um índice clusterizado ao criar uma nova collection em um banco de banco de dados específico. O exemplo seguinte cria uma nova coleção com um índice agrupado ascendente no campo _id
:
$options = [ 'clusteredIndex' => [ 'key' => ['_id' => 1], 'unique' => true ] ]; $database->createCollection('<collection name>', $options);
Text Index
O exemplo seguinte cria um índice de texto no campo de string especificado:
$indexName = $collection->createIndex(['<field name>' => 'text']);
Listar índices
O exemplo a seguir imprime uma lista de índices na coleção especificada:
foreach ($collection->listIndexes() as $indexInfo) { echo $indexInfo; }
Excluir um índice.
O exemplo a seguir exclui um índice com o nome especificado:
$collection->dropIndex('<index name>');
Para saber mais sobre como excluir índices, consulte Remover um índice no guia Considerações e gerenciamento de índices.
Gerenciamento do índice do Atlas Search
As seções seguintes contêm exemplos de código que descrevem como gerenciar índices Atlas Search e Vector Search.
Observação
O gerenciamento de índices de pesquisa do Atlas Search e do Vector Search é assíncrono
A biblioteca PHP do MongoDB gerencia os índices do Atlas Search de forma assíncrona. Os métodos da biblioteca descritos nas seções a seguir retornam a resposta do servidor imediatamente, mas as alterações nos índices de pesquisa ocorrem em segundo plano e podem não ser concluídas até algum tempo depois.
Para saber mais sobre os índices do Atlas Search , consulte o guia Índices do Atlas Search .
Criar Índice de Atlas Search
O exemplo seguinte cria um índice do Atlas Search no campo especificado:
$indexName = $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => '<Search index name>'] );
Listar índices de pesquisa
O exemplo abaixo imprime uma lista de índices do Atlas Search na collection especificada:
foreach ($collection->listSearchIndexes() as $indexInfo) { echo toJSON($indexInfo), PHP_EOL; }
Atualizar índices de pesquisa
O exemplo seguinte atualiza um índice do Atlas Search existente com a nova definição de índice especificada:
$collection->updateSearchIndex( '<Search index name>', ['mappings' => [ 'dynamic' => false, 'fields' => [ '<string field name>' => [ 'type' => 'string', 'analyzer' => 'lucene.standard' ] ] ]] );
Excluir índices Atlas Search
O exemplo seguinte exclui um índice do Atlas Search com o nome especificado:
$collection->dropSearchIndex('<Search index name>');