listIndexes
Definição
listIndexes
Retorna informações sobre os índices na coleção 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 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.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
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 |
---|---|---|
| string | O nome da collection. |
| inteiro | Opcional. Especifica o tamanho do lote do cursor. |
| any | 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çãoid
inteiro
Um 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 comando
getMore
para obter o próximo lote de informações do índice.ns
string
O banco de dados e o nome collection no seguinte formato:
<database-name>.<collection-name>
firstBatch
documento
As 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 }