Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

db.collection.createIndex()

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Opções
  • Opções para todos os tipos de índice
  • Opção para agrupamento
  • Opções para Índices text
  • Opções para Índices 2dsphere
  • Opções para Índices 2d
  • Opções para Índices wildcard
  • Comportamentos
  • Recriando um Índice Existente
  • Opções de índice
  • Transações
  • Exemplos
  • Criar um índice ascendente em um único campo
  • Criar um índice em vários campos
  • Criar índices com agrupamento especificado
  • Criar um Índice Curinga
  • Criar Índice com Commit Quorum
  • Informações adicionais
db.collection.createIndex(keys, options, commitQuorum)

Importante

Método mongosh

Esta página documenta um método mongosh . Esta não é a documentação para comandos de banco de dados ou drivers específicos de idioma, como Node.js.

Para o comando do banco de dados, consulte o comando createIndexes.

Para drivers de API do MongoDB, consulte a documentação do driver MongoDB específica do idioma.

Para a documentação de shell legada do mongo, consulte a documentação para a versão correspondente do MongoDB Server:

mongo shell v4.4

Cria índices em coleções.

Para minimizar o impacto da criação de um índice em conjunto de réplicas e clusters fragmentados, use um procedimento de rolling de índices de construçã, conforme descrito em Construções contínuas de índices em replica sets.

Você pode utilizar o db.collection.createIndex() para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações MongoDB na nuvem

O método createIndex() tem o seguinte formulário:

db.collection.createIndex( <keys>, <options>, <commitQuorum>)

O método createIndex() utiliza os seguintes parâmetros:

Parâmetro
Tipo
Descrição
keys
documento

Um documento que contém os pares de campos e valores em que o campo é a chave do índice e o valor descreve o tipo de índice para esse campo.

Para um índice ascendente em um campo, especifique um valor de 1. Para índice descendente, especifique um valor de -1.

Um asterisco (*) não é um nome de índice válido.

O MongoDB suporta vários tipos de índice diferentes, incluindo:

Consulte os tipos de índice para obter mais informações.

Índices curinga oferece suporte a cargas de trabalho em que os usuários consultam campos personalizados ou uma grande variedade de campos em uma coleção.

  • Você pode criar um índice curinga em um campo específico e seus subcaminhos ou em todos os campos de um documento.

    Para obter detalhes, consulte Índices de curinga.

options
documento
Opcional. Um documento que contém um conjunto de opções que controla a criação do índice. Consulte Opções para detalhes.
inteiro ou string

Opcional. O número mínimo de nós do conjunto de réplicas de votação contendo dados (ou seja, commit quorum), incluindo o primário, que deve relatar uma construção de índice bem-sucedida antes que o primário marque o indexes como pronto. Um nó"votante" é qualquer nó do conjunto de réplicas em que members[n].votes é maior que 0.

suporta os seguintes valores:

  • "votingMembers" - todos os membros do conjunto de réplicas de votos com dados (Padrão).

  • "majority" - uma maioria simples dos membros do conjunto de réplicas de votos portadores de dados.

  • <int> - um número específico de membros do conjunto de réplicas de votação com dados.

  • 0 - Desativa o comportamento de votação em quórum. Os membros iniciam a construção do índice simultaneamente, mas não votam nem esperam pelo quorum antes de concluírem a construção do índice. Se você iniciar uma construção de índice com um quorum para o commit de 0, não poderá modificar posteriormente o quorum de confirmação usando setIndexCommitQuorum.

  • Um nome de tag do conjunto de réplicas.

O documento options contém um conjunto de opções que controla a criação do índice. Diferentes tipos de índice podem ter opções adicionais específicas para esse tipo.

Várias opções de índice podem ser especificadas no mesmo documento. Entretanto, se você especificar vários documentos de opção, a operação db.collection.createIndex() falhará.

Considere a seguinte operação do db.collection.createIndex() :

db.collection.createIndex(
{
"a": 1
},
{
unique: true,
sparse: true,
expireAfterSeconds: 3600
}
)

Se a especificação de opções tivesse sido dividida em vários documentos como este: { unique: true }, { sparse: true, expireAfterSeconds: 3600 }, a operação de criação do índice teria falhado.

As opções a seguir estão disponíveis para todos os tipos de índice, a menos que especificado de outra forma:

Parâmetro
Tipo
Descrição
unique
boleano

Opcional. Cria um índice único para que a coleção não aceite a inserção ou atualização de documentos em que o valor da chave do índice corresponda a um valor existente no índice.

Especifique true para criar um índice único. O valor padrão é false.

A opção está indisponível para índices com hash.

name
string
Opcional. O nome do índice. Se não for especificado, o MongoDB gera um nome de índice concatenando os nomes dos campos indexados e a ordem de classificação.
partialFilterExpression
documento

Opcional. Se especificado, o índice só faz referência a documentos que correspondam à expressão de filtro. Consulte Índices parciais para obter mais informações.

Uma expressão de filtro pode incluir:

Você pode especificar uma opção partialFilterExpression para todos os tipos de índiceMongoDB.

sparse
boleano

Opcional. Se true, o índice referencia apenas documentos com o campo especificado. Esses índices usam menos espaço, mas se comportam de forma diferente em algumas situações (especialmente em tipos). O valor padrão é false. Consulte Analisar índices para obter mais informações.

Os seguintes tipos de índice são escassos por padrão e ignoram esta opção:

Para um índice composto que inclui 2dsphere chave(s) de índice junto com chaves de outros tipos, somente os campos de índice 2dsphere determinam se o índice faz referência a um documento.

Dica

Os índices parciais oferecem um superconjunto da funcionalidade dos índices esparsos. A menos que seu aplicativo tenha um requisito específico, use índices parciais em vez de índices esparsos.

expireAfterSeconds
inteiro

Opcional. Especifica um valor, em segundos, como um tempo de vida(TTL) para controlar por quanto tempo o MongoDB retém documentos na coleção. Esta opção se aplica somente aos índices TTL. Consulte Expirar dados de coleções configurando TTL para obter mais informações.

Se você usa índices TTL criados antes do MongoDB 5.0 ou se deseja sincronizar dados criados no MongDB 5.0 com um pré-5.0 instalação, consulte Índices configurados usando NaN para evitar problemas de configuração incorreta.

O valor expireAfterSeconds do índice TTL deve estar dentro de 0 e 2147483647 inclusive.

boleano

Opcional. Um sinalizador que determina se o índice está hidden do planejador de queries. Um índice oculto não é avaliado como parte da seleção do plano de query.

O padrão é false.

storageEngine
documento

Opcional. Permite que os usuários configurem o mecanismo de armazenamento por índice ao criar um índice.

A opção storageEngine deve receber o seguinte formulário:

storageEngine: { <storage-engine-name>: <options> }

As opções de configuração do mecanismo de armazenamento especificadas ao criar índices são validadas e registradas no oplog durante a replicação para suportar conjuntos de réplicas com membros que usam mecanismos de armazenamento diferentes.

Parâmetro
Tipo
Descrição
collation
documento

Opcional. Especifica o agrupamento do índice.

A colocação permite que os usuários especifiquem regras específicas do idioma para comparação de strings, como regras para letras maiúsculas e marcas de acento.

Se você especificou um agrupamento no nível da coleção, então:

  • Se você não especificar um agrupamento ao criar o índice, o MongoDB criará o índice com o agrupamento padrão da coleção.

  • Se você especificar um agrupamento ao criar o índice, o MongoDB criará o índice com o agrupamento especificado.

A opção de agrupamento tem a seguinte sintaxe:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Ao especificar agrupamento, o campo locale é obrigatório; todos os outros campos de agrupamento são opcionais. Para obter descrições dos campos, consulte Documento de agrupamento.

Os índices a seguir oferecem suporte apenas à comparação binária simples e não oferecem suporte ao agrupamento:

Dica

Para criar um índice text ou 2d em uma collection que tem um agrupamento não simples, você deve especificar explicitamente {collation: {locale: "simple"} } ao criar o índice.

Se você especificou um agrupamento no nível da coleção, então:

  • Se você não especificar um agrupamento ao criar o índice, o MongoDB criará o índice com o agrupamento padrão da coleção.

  • Se você especificar um agrupamento ao criar o índice, o MongoDB criará o índice com o agrupamento especificado.

Dica

Ao especificar um agrupamento strength de 1 ou 2, você pode criar um índice que não diferencia maiúsculas de minúsculas. O índice com um agrupamento strength de 1 não diferencia letras diacríticas e maiúsculas de minúsculas.

Você pode criar vários índices na(s) mesma(s) chave(s) com diferentes agrupamentos. Para criar indexes com o mesmo padrão de chave, mas com agrupamentos diferentes, você deve fornecer nomes de índice exclusivos.

Para usar um índice para comparações de strings, uma operação também deve especificar o mesmo agrupamento. Ou seja, um índice com ordenação não pode suportar uma operação que executa comparações de strings nos campos indexados se a operação especificar uma ordenação diferente.

Aviso

Porque os índices configurados com agrupamento usam ICU. chaves de agrupamento para obter a ordem de classificação, chaves de índice com reconhecimento de agrupamento pode ser maior do que as chaves de índice para índices sem agrupamento.

Por exemplo, a coleta myColl possui um índice em um campo de sequência category com o código do idioma de ordenação "fr".

db.myColl.createIndex( { category: 1 }, { collation: { locale: "fr" } } )

A seguinte operação de consulta, que especifica o mesmo agrupamento que o índice, pode usar o índice:

db.myColl.find( { category: "cafe" } ).collation( { locale: "fr" } )

No entanto, a seguinte operação de consulta, que por padrão usa o agrupador binário "simples", não pode usar o índice:

db.myColl.find( { category: "cafe" } )

Para um índice composto em que as chaves de prefixo do índice não são strings, matrizes e documentos incorporados, uma operação que especifica um agrupamento diferente ainda pode usar o índice para dar suporte a comparações nas chaves de prefixo do índice.

Por exemplo, a coleta myColl possui um índice composto nos campos numéricos score e price e no campo de string category; o índice é criado com a localidade de ordenação "fr" para comparações de strings:

db.myColl.createIndex(
{ score: 1, price: 1, category: 1 },
{ collation: { locale: "fr" } } )

As operações a seguir, que usam agrupamento binário "simple" para comparações de strings, podem usar o índice:

db.myColl.find( { score: 5 } ).sort( { price: 1 } )
db.myColl.find( { score: 5, price: { $gt: NumberDecimal( "10" ) } } ).sort( { price: 1 } )

A operação a seguir, que usa agrupamento binário "simple" para comparações de strings no campo category indexado, pode usar o índice para preencher apenas a parte score: 5 da query:

db.myColl.find( { score: 5, category: "cafe" } )

Importante

As correspondências com chaves de documentos, incluindo chaves de documentos incorporadas, usam uma comparação binária simples. Isto significa que uma query para uma chave como "foo.bár" não corresponderá à chave "foo.bar", independente do valor definido para o parâmetro de força.

As seguintes opções estão disponíveis apenas para índices de texto:

Parâmetro
Tipo
Descrição
weights
documento

Opcional. Para índices de texto, um documento que contém pares de peso e campo. O peso é um número inteiro que varia de 1 a 99.999 e denota a importância do campo em relação aos outros campos indexados em termos de pontuação. Você pode especificar pesos para alguns ou todos os campos indexados. Consulte Atribuir pesos aos resultados da pesquisa de texto para ajustar as pontuações. O valor padrão é 1.

Iniciando no MongoDB 5.0, a opção pesos é permitida somente para índices de texto.

default_language
string
Opcional. Para índices de texto, o idioma que determina a lista de palavras de interrupção e as regras para o stemmer e o tokenizer. Consulte Idiomas de Pesquisa de Texto para os idiomas disponíveis e Especificar o idioma padrão para um índice de texto para obter mais informações e exemplos. O valor padrão é english.
language_override
string
Opcional. Para índices de texto, o nome do campo, nos documentos da coleção, que contém o idioma de substituição do documento. O valor padrão é language. Consulte Especificar o idioma padrão para um índice de texto para obter um exemplo.
textIndexVersion
inteiro

Opcional. O número da versão do índice text. Os usuários podem usar essa opção para substituir o número da versão padrão.

Para ver as versões disponíveis, consulte Versões do Índice de Texto.

A seguinte opção está disponível apenas para índices de 2dsphere:

Parâmetro
Tipo
Descrição
2dsphereIndexVersion
inteiro

Opcional. O número da versão do índice 2dsphere. Os usuários podem usar essa opção para substituir o número da versão padrão.

Para as versões disponíveis, consulte Índices do 2dsphere.

As opções a seguir estão disponíveis somente para índices 2D:

Parâmetro
Tipo
Descrição
bits
inteiro

Opcional. Para índices 2d, o número de precisão do valor geohash armazenado dos dados de localização.

O valor de bits varia de 1 a 32, inclusive. O valor padrão é 26.

min
número
Opcional. Para índices do 2d, o limite de inclusão inferior para os valores de longitude e latitude. O valor padrão é -180.0.
max
número
Opcional. Para índices do 2d, o limite de inclusão superior para os valores de longitude e latitude. O valor padrão é 180.0.

Índices curinga podem utilizar a opção wildcardProjection.

Parâmetro
Tipo
Descrição
wildcardProjection
documento

Opcional. Permite que os usuários incluam ou excluam caminho do campo específicos de um índice curinga.

Essa opção só é válida quando você cria um índice curinga em todos os campos do documento. Não é possível especificar a opção wildcardProjection ao criar um índice curinga em um caminho de campo específico e seus subcampos.

wildcardProjection funciona com especificações como:

{ "$**": 1 }
{ "userID":, "$**": 1 }

No entanto, você não pode definir um índice que inclua o mesmo campo nos campos curinga e os campos regulares (não curinga). Para definir o índice corretamente, utilize um wildcardProjection para excluir campos duplicados do padrão curinga.

wildcardProjection não funciona com uma especificação como:

``{ "path.to.field.$**" : 1 }``

A opção wildcardProjection tem o seguinte formato:

wildcardProjection: {
"path.to.field.a" : <value>,
"path.to.field.b" : <value>
}

O <value> pode ser um dos seguintes:

  • 1 ou true para incluir o campo no índice curinga.

  • 0 ou false para excluir o campo do índice curinga.

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 :

{
"wildcardProjection" : {
"_id" : 1,
"<field>" : 0|1
}
}

Todas as declarações no documento wildcardProjection devem ser declarações de inclusão ou de exclusão. Você também pode incluir o campo _id com declarações de exclusão. Esta é a única exceção à regra.

Se você chamar db.collection.createIndex() para um índice que já existe, o MongoDB não recria o índice.

Com exceção da opção de agrupamento, se você criar um índice com um conjunto de opções de índice e tentar recriar o mesmo índice, mas com diferentes opções de índice, o MongoDB não alterará as opções nem recriará o índice.

A opção oculta pode ser alterada sem soltar e recriar o índice. Consulte Opção oculta.

Para alterar as outras opções de índice, solte o índice existente com db.collection.dropIndex() antes de executar o db.collection.createIndex() com as novas opções.

Você pode criar vários índices na(s) mesma(s) chave(s) com diferentes agrupamentos. Para criar indexes com o mesmo padrão de chave, mas com agrupamentos diferentes, você deve fornecer nomes de índice exclusivos.

Para ocultar ou exibir índices existentes, você pode usar os seguintes métodos mongosh :

Por exemplo,

  • Para alterar a opção hidden para um índice para true, utilize o método db.collection.hideIndex():

    db.restaurants.hideIndex( { borough: 1, ratings: 1 } );
  • Para alterar a opção hidden para um índice para false, utilize o método db.collection.unhideIndex():

    db.restaurants.unhideIndex( { borough: 1, city: 1 } );

Dica

Veja também:

Você pode criar coleção e indexes dentro de uma transaction distribuída se a transaction não for uma transação de escrita de estilhaço cruzado.

Para usar db.collection.createIndex() em uma transação, a transação deve usar read concern "local". Se você especificar um nível de preocupação de leitura diferente de "local", a transação falhará.

O exemplo seguinte cria um índice ascendente no campo orderDate.

db.collection.createIndex( { orderDate: 1 } )

Se o documento keys especificar mais de um campo, então createIndex() criará um índice composto.

O exemplo seguinte cria um índice composto no campo orderDate (em ordem crescente) e no campo zipcode (em ordem decrescente.)

db.collection.createIndex( { orderDate: 1, zipcode: -1 } )

Os índices compostos podem incluir um único campo hasheado . Os índices compostos com hash exigem featureCompatibilityVersion definido para pelo menos 5.0.

O exemplo seguinte cria um índice composto no campo state (em ordem crescente) e no campo zipcode (hash):

db.collection.createIndex( { "state" : 1, "zipcode" : "hashed" } )

A ordem de campos em um índice composto é importante para suportar operações do sort() utilizando o índice.

O exemplo seguinte cria um índice denominado category_fr. O exemplo cria o índice com o agrupamento que especifica a fr localidade e a força de comparação 2:

db.collection.createIndex(
{ category: 1 },
{ name: "category_fr", collation: { locale: "fr", strength: 2 } }
)

O exemplo a seguir cria um índice composto chamado date_category_fr com um agrupamento. O agrupamento se aplica apenas às chaves de índice com valores de string.

db.collection.createIndex(
{ orderDate: 1, category: 1 },
{ name: "date_category_fr", collation: { locale: "fr", strength: 2 } }
)

O agrupamento se aplica às chaves indexadas cujos valores são string.

Para query ou operações de classificação nas chaves indexadas que usam as mesmas regras de agrupamento, o MongoDB pode usar o índice. Para obter detalhes, consulte Agrupamento e uso de índice.

  • 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 :

    {
    "wildcardProjection" : {
    "_id" : 1,
    "<field>" : 0|1
    }
    }

    Todas as declarações no documento wildcardProjection devem ser declarações de inclusão ou de exclusão. Você também pode incluir o campo _id com declarações de exclusão. Esta é a única exceção à regra.

  • Os índices curinga não suportam:

    Os índices curinga são índices esparsos . Eles não oferecem suporte a queries quando um campo indexado não existe. Um índice curinga indexará o documento se o campo curinga tiver um valor null.

    A partir do MongoDB 7.0, os índices curinga suportam ordem crescente (1) e decrescente (-1). As versões anteriores suportavam apenas ordem crescente.

Para saber mais, consulte:

Para exemplos, consulte:

Considere uma coleção products_catalog onde os documentos podem conter um campo product_attributes. O campo product_attributes pode conter campos aninhados arbitrários, incluindo documentos incorporados e arrays:

db.products_catalog.insertMany( [
{
_id : ObjectId("5c1d358bf383fbee028aea0b"),
product_name: "Blaster Gauntlet",
product_attributes: {
price: {
cost: 299.99,
currency: "USD"
}
}
},
{
_id: ObjectId("5c1d358bf383fbee028aea0c"),
product_name: "Super Suit",
product_attributes: {
superFlight: true,
resistance: [ "Bludgeoning", "Piercing", "Slashing" ]
}
}
] )

A seguinte operação cria um índice curinga no campo product_attributes :

use inventory
db.products_catalog.createIndex( { "product_attributes.$**" : 1 } )

Com este índice curinga, MongoDB indexa todos os valores escalares de product_attributes. Se um campo for um documento ou array aninhado, o índice curinga recorrerá ao documento/array e indexará todos os campos escalares no documento/array.

O índice curinga pode suportar queries arbitrárias de campo único no product_attributes ou um de seus campos aninhados:

db.products_catalog.find( { "product_attributes.superFlight" : true } )
db.products_catalog.find( { "product_attributes.maxSpeed" : { $gt : 20 } } )
db.products_catalog.find( { "product_attributes.elements" : { $eq: "water" } } )

Observação

A sintaxe do índice curinga específico do caminho é incompatível com a opção wildcardProjection . Consulte a documentação do parâmetro para obter mais informações.

Considere uma coleção products_catalog onde os documentos podem conter um campo product_attributes. O campo product_attributes pode conter campos aninhados arbitrários, incluindo documentos incorporados e arrays:

db.products_catalog.insertMany( [
{
_id : ObjectId("5c1d358bf383fbee028aea0b"),
product_name: "Blaster Gauntlet",
product_attributes: {
price: {
cost: 299.99,
currency: "USD"
}
}
},
{
_id: ObjectId("5c1d358bf383fbee028aea0c"),
product_name: "Super Suit",
product_attributes: {
superFlight: true,
resistance: [ "Bludgeoning", "Piercing", "Slashing" ]
}
}
] )

A seguinte operação cria um índice curinga em todos os campos escalares (excluindo o campo _id):

use inventory
db.products_catalog.createIndex( { "$**" : 1 } )

Com esse índice curinga, o MongoDB indexa todos os campos escalares para cada documento na coleção. Se um determinado campo for um documento ou array aninhada, o índice curinga recorrerá ao documento/array e indexará todos os campos escalares no documento/array.

O índice criado pode suportar queries em qualquer campo arbitrário dentro de documentos na coleção:

db.products_catalog.find( { "product_price" : { $lt : 25 } } )
db.products_catalog.find( { "product_attributes.elements" : { $eq: "water" } } )

Observação

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 . Consulte a documentação do parâmetro para obter mais informações.

Considere uma coleção products_catalog onde os documentos podem conter um campo product_attributes. O campo product_attributes pode conter campos aninhados arbitrários, incluindo documentos incorporados e arrays:

db.products_catalog.insertMany( [
{
_id : ObjectId("5c1d358bf383fbee028aea0b"),
product_name: "Blaster Gauntlet",
product_attributes: {
price: {
cost: 299.99,
currency: "USD"
}
}
},
{
_id: ObjectId("5c1d358bf383fbee028aea0c"),
product_name: "Super Suit",
product_attributes: {
superFlight: true,
resistance: [ "Bludgeoning", "Piercing", "Slashing" ]
}
}
] )

A seguinte operação cria um índice curinga e usa a opção wildcardProjection para incluir somente valores escalares dos campos product_attributes.elements e product_attributes.resistance no índice.

use inventory
db.products_catalog.createIndex(
{ "$**" : 1 },
{
"wildcardProjection" : {
"product_attributes.elements" : 1,
"product_attributes.resistance" : 1
}
}
)

O padrão "$**" inclui todos os campos no documento. Use o campo wildcardProjection para limitar o índice aos campos que você especificar. Para obter a documentação completa sobre wildcardProjection, consulte Opções para índices wildcard .

Se um campo for um documento ou array aninhado, o índice curinga recursará nele e indexará todos os campos escalares no documento ou array.

O índice curinga suporta queries em qualquer campo escalar incluído no wildcardProjection:

db.products_catalog.find( { "product_attributes.elements" : { $eq: "Water" } } )
db.products_catalog.find( { "product_attributes.resistance" : "Bludgeoning" } )

Observação

Os índices curinga não suportam a combinação de instruções de inclusão e exclusão no documento wildcardProjection , exceto quando se inclui explicitamente o campo _id . Para obter mais informações sobre wildcardProjection, consulte a documentação do parâmetro.

Considere uma coleção products_catalog onde os documentos podem conter um campo product_attributes. O campo product_attributes pode conter campos aninhados arbitrários, incluindo documentos incorporados e arrays:

db.products_catalog.insertMany( [
{
_id : ObjectId("5c1d358bf383fbee028aea0b"),
product_name: "Blaster Gauntlet",
product_attributes: {
price: {
cost: 299.99,
currency: "USD"
}
}
},
{
_id: ObjectId("5c1d358bf383fbee028aea0c"),
product_name: "Super Suit",
product_attributes: {
superFlight: true,
resistance: [ "Bludgeoning", "Piercing", "Slashing" ]
}
}
] )

Este exemplo usa um índice curinga e um documento wildcardProjection para indexar os campos escalares para cada documento na coleção.

O índice curinga exclui os campos product_attributes.elements e product_attributes.resistance :

use inventory
db.products_catalog.createIndex(
{ "$**" : 1 },
{
"wildcardProjection" : {
"product_attributes.elements" : 0,
"product_attributes.resistance" : 0
}
}
)

O padrão curinga "$**" inclui todos os campos no documento. No entanto, o campo wildcardProjection exclui os campos especificados do índice.

Para documentação completa no wildcardProjection, consulte Opções para índices do wildcard .

Se um campo for um documento ou array aninhado, o índice curinga recorrerá ao documento/array e indexará todos os campos escalares no documento/array.

O índice pode suportar queries em qualquer campo escalar exceto aquelas excluídas por wildcardProjection:

db.products_catalog.find( { "product_attributes.maxSpeed" : { $gt: 25 } } )
db.products_catalog.find( { "product_attributes.superStrength" : true } )

Observação

Os índices curinga não suportam a combinação de instruções de inclusão e exclusão no documento wildcardProjection , exceto quando se inclui explicitamente o campo _id . Para obter mais informações sobre wildcardProjection, consulte a documentação do parâmetro.

Observação

Exige featureCompatibilityVersion 4.4+

Cada mongod no conjunto de réplica ou agrupamento fragmentado deve ter featureCompatibilityVersion configurado para pelo menos 4.4 para iniciar construções de índice simultaneamente entre membros do conjunto de réplicas.

O índice se baseia em um conjunto de réplicas ou cluster fragmentado criado simultaneamente em todos os membros do conjunto de réplicas com dados. Para clusters fragmentados, a construção de índices ocorre somente em shards que contêm dados para a collection que está sendo indexada. O primário requer um número mínimo de membros voting portadores de dados (ou seja, quórum para a confirmação), incluindo ele próprio, que deve concluir a compilação antes de marcar o índice como pronto para uso. Consulte Construções de Índices em Ambientes Replicados para obter mais informações.

Para definir o commit quorum, use createIndex() para especificar o valor commitQuorum .

commitQuorum especifica quantos nós votantes portadores de dados, ou quais nós votantes, incluindo o primário, devem estar preparados para confirmar a construção do índice antes que o primário execute o commit. O commit quorum padrão é votingMembers, o que significa todos os nós portadores de dados.

A seguinte operação cria um índice com um commit quorum de "majority" ou uma simples maioria dos nós votantes com recurso de dados:

db.getSiblingDB("examples").invoices.createIndex(
{ "invoices" : 1 },
{ },
"majority"
)

A construção do índice de notas primário ficou pronta somente após a maioria simples dos membros votantes portadores de dados " votarem em" para confirmar a criação do índice. Para obter mais informações sobre a criação de índices e o processo de votação, consulte Construções de índices em ambientes replicados.

← db.collection.countDocuments()