Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Índices ocultos

Nesta página

  • Comportamento
  • Restrições
  • Exemplos

Os índices ocultos não são visíveis para oplanejador de query e não podem ser usados para dar suporte a uma query.

Ocultando um índice do planejador, você pode avaliar o impacto em potencial do descarte de um índice sem realmente descartá-lo. Se o impacto for negativo, você poderá exibir o índice em vez de ter que recriar um índice descartado.

Além de ficarem ocultos do planejador, os índices ocultos se comportam como índices visíveis. Por exemplo:

Para criar um índice hidden, utilize o método db.collection.createIndex() com a opção oculto configurada para true.

Observação

Para usar a opção hidden com db.collection.createIndex(), você deve ter o featureCompatibilityVersion configurado para 5.0 ou superior.

Por exemplo, a seguinte operação cria um índice crescente oculto no campo borough:

db.addresses.createIndex(
{ borough: 1 },
{ hidden: true }
);

Para verificar, execute db.collection.getIndexes() na collection addresses:

db.addresses.getIndexes()

A operação retorna as seguintes informações:

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1
},
"name" : "borough_1",
"hidden" : true
}
]

A opção de índice hidden só é retornada se o valor for true.

Observação

  • Para ocultar um índice, você deve ter featureCompatibilityVersion configurado para 5.0 ou superior.

  • Não é possível ocultar o índice _id.

Para ocultar um índice existente, você pode usar o comando collMod ou mongosh auxiliar db.collection.hideIndex().

Por exemplo, crie um índice sem ocultar:

db.restaurants.createIndex( { borough: 1, ratings: 1 } );

Para ocultar o índice, você pode especificar:

  • o documento de especificação da chave de índice para o método db.collection.hideIndex():

    db.restaurants.hideIndex( { borough: 1, ratings: 1 } ); // Specify the index key specification document
  • o nome do índice para o método db.collection.hideIndex():

    db.restaurants.hideIndex( "borough_1_ratings_1" ); // Specify the index name

Para verificar, execute db.collection.getIndexes() na collection restaurants:

db.restaurants.getIndexes()

A operação retorna as seguintes informações:

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1",
"hidden" : true
}
]

A opção de índice hidden só é retornada se o valor for true.

Para exibir um índice oculto, você pode usar o comando collMod ou mongosh auxiliar db.collection.unhideIndex(). Você pode especificar:

  • o documento de especificação da chave de índice para o método db.collection.unhideIndex():

    db.restaurants.unhideIndex( { borough: 1, city: 1 } ); // Specify the index key specification document
  • o nome do índice para o método db.collection.unhideIndex():

    db.restaurants.unhideIndex( "borough_1_ratings_1" ); // Specify the index name

Para verificar, execute db.collection.getIndexes() na collection restaurants:

db.restaurants.getIndexes()

A operação retorna as seguintes informações:

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1"
}
]

A opção de índice hidden não aparece mais como parte do índice borough_1_ratings_1, pois o campo só é retornado se o valor for true.

Como os índices são totalmente mantidos enquanto estão ocultos, o índice fica imediatamente disponível para uso quando são exibidos.

← Índices que não diferenciam maiúsculas de minúsculas