Índices
Os índices suportam a execução eficiente de query no MongoDB. Sem índices, o MongoDB deve executar uma varredura de coleção, ou seja, digitalizar todos os documentos em uma coleção, para selecionar os documentos que correspondem à declaração de query. Se existir um índice apropriado para uma query, o MongoDB poderá usar o índice para limitar o número de documentos que deve inspecionar.
O driver PHP suporta o gerenciamento de índices por meio da MongoDB\Collection
classe , que implementa o MongoDB Gerenciamento de índices e enumeração de índices especificações.
Este documento fornece uma introdução à criação, lista e eliminação de índices usando a Biblioteca PHP do MongoDB. A referência Índices do Manual do MongoDB fornece informações mais completas sobre indexação no MongoDB.
Crie índices
Crie índices com os métodos MongoDB\Collection::createIndex()
ou MongoDB\Collection::createIndexes()
. Consulte a referência do método para obter mais detalhes sobre cada método.
O exemplo seguinte cria um índice ascendente no campo state
utilizando o método createIndex()
:
$collection = (new MongoDB\Client)->test->zips; $result = $collection->createIndex(['state' => 1]); var_dump($result);
Ao criar um índice, o método retorna seu nome, que é gerado automaticamente a partir de sua especificação. O exemplo acima produziria algo semelhante a:
string(7) "state_1"
Listar índices
O método MongoDB\Collection::listIndexes()
fornece informações sobre os índices em uma collection. O método MongoDB\Collection::listIndexes()
retorna um iterador de objetos MongoDB\Model\IndexInfo
, que você pode utilizar para visualizar informações sobre cada índice. Consulte a referência do método para obter mais detalhes.
O exemplo a seguir lista todos os índices na collection zips
no reconhecimento de data center test
:
$collection = (new MongoDB\Client)->test->zips; foreach ($collection->listIndexes() as $indexInfo) { var_dump($indexInfo); }
A saída se assemelha a:
object(MongoDB\Model\IndexInfo)#10 (4) { ["v"]=> int(1) ["key"]=> array(1) { ["_id"]=> int(1) } ["name"]=> string(4) "_id_" ["ns"]=> string(9) "test.zips" } object(MongoDB\Model\IndexInfo)#13 (4) { ["v"]=> int(1) ["key"]=> array(1) { ["state"]=> int(1) } ["name"]=> string(7) "state_1" ["ns"]=> string(9) "test.zips" }
Índice de descarte
O método MongoDB\Collection::dropIndex()
permite que você descarte um único índice enquanto MongoDB\Collection::dropIndexes()
descarta todos os índices em uma collection. Consulte a referência do método para obter mais detalhes sobre cada método.
O exemplo a seguir elimina um único índice por seu nome, state_1
:
$collection = (new MongoDB\Client)->test->zips; $result = $collection->dropIndex('state_1'); var_dump($result);
O resultado da operação se assemelharia a:
object(MongoDB\Model\BSONDocument)#11 (1) { ["storage":"ArrayObject":private]=> array(2) { ["nIndexesWas"]=> int(2) ["ok"]=> float(1) } }