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 gerenciamento e índices. 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 no aplicação de amostra ou em seu próprio aplicação. Certifique-se de definir a MONGODB_URI variável de ambiente para a string de conexão de sua implantação do MongoDB e substitua <database> os <collection> espaços reservados e 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.
Dica
The require statement in the sample application loads the MongoDB PHP Library and assumes that the vendor directory is in the same directory as your application file. If your application file is located elsewhere, adjust the path to vendor/autoload.php accordingly.
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->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(); }
Í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 de pesquisa do MongoDB
As seções a seguir contêm exemplos de código que descrevem como gerenciar índice de pesquisa MongoDB e índice de pesquisa vetorial.
Observação
O gerenciamento do índice do MongoDB pesquisa e da MongoDB pesquisa vetorial é assíncrono
A Biblioteca PHP do MongoDB gerencia índices de Pesquisa MongoDB 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 de pesquisa do MongoDB, consulte o guia Índices de pesquisa do MongoDB.
Criar Índice de Atlas Search
O exemplo a seguir cria um índice de pesquisa do MongoDB no campo especificado:
$indexName = $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => '<Search index name>'], );
Listar índices de pesquisa
O exemplo a seguir imprime uma lista de índices de pesquisa do MongoDB na coleção especificada:
foreach ($collection->listSearchIndexes() as $indexInfo) { echo toJSON($indexInfo), PHP_EOL; }
Atualizar índices de pesquisa
O exemplo a seguir atualiza um índice de pesquisa do MongoDB 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 a seguir excluir um índice de pesquisa do MongoDB com o nome especificado:
$collection->dropSearchIndex('<Search index name>');