Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP

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 Agrupado
  • 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

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.

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:

  1. 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 .

  2. Copie o seguinte código e cole-o em um novo arquivo .php .

  3. Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.

1<?php
2
3require __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->selectCollection('<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();
}

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 .

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 .

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.

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 .

O exemplo seguinte cria um índice único ascendente no campo especificado:

$indexName = $collection->createIndex(['<field name>' => 1], ['unique' => true]);

O exemplo seguinte cria um índice curinga ascendente na coleção:

$indexName = $collection->createIndex(['$**' => 1]);

É 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);

O exemplo seguinte cria um índice de texto no campo de string especificado:

$indexName = $collection->createIndex(['<field name>' => 'text']);

O exemplo a seguir imprime uma lista de índices na collection especificada:

foreach ($collection->listIndexes() as $indexInfo) {
echo $indexInfo;
}

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.

As seções a seguir contêm exemplos de código que descrevem como gerenciar índices de Atlas Search .

Observação

O gerenciamento do índice do Atlas 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 .

O exemplo seguinte cria um índice do Atlas Search no campo especificado:

$indexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => '<Search index name>']
);

O exemplo abaixo imprime uma lista de índices do Atlas Search na collection especificada:

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo toJSON($indexInfo), PHP_EOL;
}

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'
]
]
]]
);

O exemplo seguinte exclui um índice do Atlas Search com o nome especificado:

$collection->dropSearchIndex('<Search index name>');

Voltar

Transforme seus dados com agregação