MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

3 maneiras de criar um índice no MongoDB


No MongoDB, você pode criar um índice em uma coleção usando o createIndex() método, o createIndexes() ou o método createIndexes comando de administração.

O createIndex() Método


O db.collection.createIndex() O método cria um índice na coleção especificada. É um wrapper para o createIndexes comando de administração.

Exemplo:
db.pets.createIndex( { weight: -1 } )

Isso cria um índice na coleção de animais de estimação. É um índice descendente no weight campo. Sabemos que é decrescente porque especificamos -1 . Se tivéssemos especificado 1 seria ascendente.

Um índice composto é aquele definido em vários campos. Você pode criar um índice composto separando cada campo com uma vírgula.

Exemplo:
db.pets.createIndex( { name: 1, type: -1 } )

Isso cria um índice composto no name campo (em ordem crescente) e o type campo (em ordem decrescente).

Os createIndexes() Método


O db.collection.createIndexes() O método cria um ou mais índices em uma coleção Este método também é um wrapper para o createIndexes comando de administração.

Quando você cria índices com o createIndexes() método, você precisa fornecer os campos em uma matriz. Você precisa fazer isso mesmo se estiver criando apenas um único índice.

Exemplo:
db.pets.createIndexes( [ { weight: -1 } ] )

Isso faz a mesma coisa que o primeiro exemplo faz. Ele cria um índice descendente no weight campo.

Para criar vários índices, separe o documento de cada índice por uma vírgula.

Exemplo:
db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )

Você também pode criar índices compostos com createIndexes() . Para fazer isso, basta definir o índice composto no documento para esse índice.

Portanto, poderíamos fazer o seguinte:
db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )

Isso cria um índice composto para o name e type campos e um índice separado para o weight campo.

Os createIndexes Comando


O createIndexes comando de administração cria um ou mais índices em uma coleção Os dois métodos anteriores são wrappers em torno deste comando.

Portanto, podemos usar o createIndexes comando para criar os índices que fizemos nos exemplos anteriores.

Aqui está um exemplo de como criar um índice no name campo:
db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1 },
        name: "idx_name_1"
      }
    ]
  }
)

Nos exemplos anteriores, deixamos o MongoDB nomear nossos índices, mas neste caso nomeamos o índice idx_name_1 .

Aqui está um exemplo de criação de vários índices:
db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1, type: -1 },
        name: "idx_name_1_type_-1"
      },
      {
        key: { "weight" : -1 },
        name: "idx_weight_-1"
      }
    ]
  }
)

Neste caso, o primeiro índice é um índice composto no name e type campos, e nós o nomeamos idx_name_1_type_-1 .

O segundo índice está no weight campo e nós o chamamos de idx_weight_-1 .

Índices curinga


Todas as três abordagens acima suportam índices curinga a partir do MongoDB 4.2 (o featureCompatibilityVersion deve ser pelo menos 4.2 para criar índices curinga).

Índices curinga são úteis para coleções que contêm dados não estruturados com campos diferentes em hierarquias diferentes.

Consulte Como criar um índice curinga no MongoDB para obter exemplos.

Documentação do MongoDB


Abaixo estão os links para a documentação do MongoDB para cada um dos itens acima:
  • db.collection.createIndex()
  • db.collection.createIndexes()
  • createIndexes