listIndexes
Definição
listIndexes
Retorna informações sobre os índices na collection especificada. As informações de índice retornadas incluem as chaves e as opções usadas para criar o índice, bem como índices ocultos. Opcionalmente, você pode definir o tamanho do lote do primeiro lote de resultados.
Dica
Em
mongosh
, esse comando também pode ser executado por meio do método auxiliardb.collection.getIndexes()
.Os métodos auxiliares são práticos para os usuários
mongosh
, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.
Sintaxe
O comando tem o seguinte formato:
db.runCommand ( { listIndexes: "<collection-name>", cursor: { batchSize: <int> }, comment: <any> } )
Campos de comando
listIndexes
usa os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
listIndexes | string | O nome da collection. |
cursor.batchSize | inteiro | Opcional. Especifica o tamanho do lote do cursor. |
comment | qualquer | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Acesso necessário
Se o controle de acesso for imposto, a função read
integrada fornece os privilégios necessários para executar listIndexes
para as coleções em um banco de dados.
Comportamento
Desconexão do cliente
A partir do MongoDB 4.2, se o cliente que emitiu listIndexes
se desconectar antes da conclusão da operação, o MongoDB marcará listIndexes
para encerramento usando killOp
.
Restrição de estado do membro do conjunto de réplica
Para executar em um membro do conjunto de réplicas, as operações delistIndexes
exigem que o membro esteja no estado PRIMARY
ou SECONDARY
. Se o membro estiver em outro estado, como STARTUP2
, ocorre um erro na operação.
Índices curinga
A partir do MongoDB 5.0.16, o campo wildcardProjection
armazena a projeção do índice na forma enviada. Versões anteriores do servidor podem ter armazenado a projeção de forma normalizada.
O servidor usa o índice da mesma maneira, mas você pode notar uma diferença na saída dos comandos listIndexes
e db.collection.getIndexes()
.
Saída
listIndexes.cursor
Um conjunto de resultados retornado no tamanho do lote especificado pelo cursor. Cada documento no resultado do lote contém os seguintes campos:
CampoTipoDescriçãoidinteiroUm número inteiro de 64 bits. Se for zero, não há mais lotes de informações. Se for diferente de zero, um ID de cursor, utilizável em um comandogetMore
para obter o próximo lote de informações do índice.nsstringO banco de dados e o nome collection no seguinte formato:<database-name>.<collection-name>
firstBatchdocumentoAs informações do índice incluem as chaves e opções usadas para criar o índice. A opção de índice oculto só estará presente se o valor for verdadeiro.
Utilize o
getMore
para recuperar resultados adicionais conforme necessário.
Exemplos
Listar índices de banco de dados
Este exemplo lista índices para a collection contacts
sem especificar o tamanho do lote do cursor.
1 db.runCommand ( 2 { 3 listIndexes: "contacts" 4 } 5 )
1 { 2 cursor: { 3 id: Long("0"), 4 ns: 'test.contacts', 5 firstBatch: [ 6 { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.contacts' }, 7 { v: 2, key: { a: 1 }, name: 'a_1', ns: 'test.contacts' } 8 ] 9 }, 10 ok: 1 11 }
Especifique o tamanho do lote de resultados
Este exemplo lista índices para a collection contacts
e especifica um tamanho de lote de cursor de 1.
1 db.runCommand ( 2 { 3 listIndexes: "contacts", cursor: { batchSize: 1 } 4 } 5 )
1 { 2 cursor: { 3 id: Long("4809221676960028307"), 4 ns: 'test.contacts', 5 firstBatch: [ { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.contacts' } ] 6 }, 7 ok: 1 8 }
Recuperar resultados adicionais
Este exemplo utiliza getMore
para recuperar lotes de resultados adicionais da collection contacts
.
1 db.runCommand( 2 { 3 getMore: Long("4809221676960028307"), collection: "contacts" 4 } 5 )
1 { 2 cursor: { 3 nextBatch: [ { v: 2, key: { a: 1 }, name: 'a_1', ns: 'test.contacts' } ], 4 id: Long("0"), 5 ns: 'test.contacts' 6 }, 7 ok: 1 8 }