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

Índices curinga

Nesta página

  • Casos de uso
  • Começar
  • Detalhes
  • Queries cobertas
  • Saiba mais

O MongoDB oferece suporte à criação de índices em um campo, ou conjunto de campos, para melhorar o desempenho das consultas. O MongoDB suporta esquemas flexíveis, o que significa que os nomes dos campos de documento podem diferir dentro de uma coleção. Use índices curinga para dar suporte a consultas em campos arbitrários ou desconhecidos.

Para criar um índice curinga, utilize o especificador curinga ($**) como a chave de índice:

db.collection.createIndex( { "$**": <sortOrder> } )

É possível utilizar os seguintes comandos para criar um índice curinga:

Utilize índices curinga somente quando os campos que você deseja indexar forem desconhecidos ou possam mudar. Os índices curinga não funcionam tão bem quanto os índices direcionados em campos específicos. Se sua collection contiver nomes de campos arbitrários que impeçam índices direcionados, considere remodelar seu esquema para ter nomes de campos consistentes. Para saber mais sobre índices direcionados, consulte Crie índices para oferecer suporte a queries.

Considere utilizar um índice curinga nas seguintes situações:

  • Se seu aplicativo realizar a consulta de uma coleção na qual os nomes dos campos variam entre os documentos, crie um índice curinga para dar suporte a queries em todos os nomes de campos de documentos possíveis.

  • Se seu aplicativo realizar consultas repetidamente de um campo de documento incorporado onde os subcampos não são consistentes, crie um índice curinga para oferecer suporte a consultas em todos os subcampos.

  • Se seu aplicativo realizar consultas de documentos que compartilham características comuns. Um índice curinga composto pode cobrir com eficiência muitas consultas para documentos que têm campos comuns. Para saber mais, consulte Índices curinga compostos.

É possível executar as seguintes tarefas com índices curinga:

Os índices curinga se comportam da seguinte maneira:

  • É possível criar múltiplos índices curinga em uma coleção.

  • Um índice curinga pode cobrir os mesmos campos que outros índices na collection.

  • Os índices curinga omitem o campo _id por padrão. Para incluir o campo _id no índice curinga, você deve explicitamente incluí-lo no documento wildcardProjection especificando { "_id" : 1 }.

  • Os índices curinga são índices esparsos e contêm apenas entradas para documentos que têm o campo indexado, mesmo que o campo de índice contenha um valor nulo.

  • Os índices curinga são distintos e incompatíveis com os índices de texto curinga. Os índices curinga não suportam consultas usando o operador $text .

Os índices curinga poderão suportar uma consulta coberta somente se todas as condições a seguir forem verdadeiras:

  • O planejador de consulta seleciona o índice curinga para atender ao predicado da consulta.

  • O predicado de consulta especifica exatamente um campo coberto pelo índice curinga.

  • A projeção de consulta exclui explicitamente o _id e inclui somente o campo de consulta.

  • O campo de consulta especificado nunca é uma matriz.

Considere o seguinte índice curinga na collection employees:

db.employees.createIndex( { "$**" : 1 } )

A seguinte operação faz uma consulta para um campo único lastName e projeta todos os outros campos a partir do documento resultante:

db.employees.find(
{ "lastName" : "Doe" },
{ "_id" : 0, "lastName" : 1 }
)

Se o lastName especificado nunca for uma matriz, o MongoDB poderá usar o índice curinga $** para dar suporte a uma consulta coberta.

Para saber mais sobre índices curinga, consulte:

← Versões de índices de texto