Menu Docs
Página inicial do Docs
/ / /
Scala
/

Crie índices

Nesta página

  • Pré-requisitos
  • Conecte-se a um MongoDB deployment
  • Índice Ascendente
  • Índice Ascendente Único
  • Índice Ascendente Composto
  • Índice decrescente
  • Índice de chave descendente única
  • Índice de chave descendente composta
  • Índices compostos
  • Índices de texto
  • Índice com hash
  • Índices geoespaciais
  • 2dsphere
  • IndexOptions
  • índice único
  • Índice parcial
  • Obter uma lista de índices em uma collection

Índices oferecem suporte à execução eficiente de query no MongoDB. Para criar um índice em um campo ou campo, passe um documento de especificação de índice para o método MongoCollection.createIndex() .

O driver Scala fornece a classe Indexes que inclui métodos de fábrica estáticos para criar documentos de especificação de índice para os vários tipos de chave de índice do MongoDB. Para saber mais sobre os tipos de índice, consulteÍndices no manual do servidor.

Observação

O MongoDB só cria um índice se um índice da mesma especificação ainda não existir.

Você deve incluir as seguintes declarações de importação em seu programa para executar os exemplos de código neste guia:

import org.mongodb.scala._
import org.mongodb.Indexes
import org.mongodb.IndexOptions
import org.mongodb.Filters

Observação

Este guia usa as implicações implícitas de Observable , conforme abordado no Quick Start Primary.

Primeiro, conecte a um MongoDB deployment e, em seguida, declare e defina as instâncias MongoDatabase e MongoCollection .

O código a seguir se conecta a uma MongoDB deployment standalone em execução em localhost na porta 27017. Em seguida, define a variável database para fazer referência ao banco de dados test e a variável collection para fazer referência à coleção restaurants :

val mongoClient: MongoClient = MongoClient()
val database: MongoDatabase = mongoClient.getDatabase("test")
val collection: MongoCollection[Document] = database.getCollection("restaurants")

Para saber mais sobre como se conectar a sistemas do MongoDB, consulte o tutorial Conectar ao MongoDB .

Para criar uma especificação para um índice ascendente, use o método de ajuda estática Indexes.ascending() .

O exemplo seguinte cria um índice ascendente no campo name :

collection.createIndex(Indexes.ascending("name"))
.printResults()

O exemplo seguinte cria um índice composto ascendente no campo stars e no campo name :

collection.createIndex(Indexes.ascending("stars", "name"))
.printResults()

Para visualizar uma maneira alternativa de criar um índice composto, consulte a seção Índices compostos .

Para criar uma especificação de um índice descendente, use o método auxiliar estático Indexes.descending() .

O exemplo seguinte cria um índice descendente no campo stars :

collection.createIndex(Indexes.descending("stars"))
.printResults()

O exemplo seguinte cria um índice composto descendente no campo stars e no campo name :

collection.createIndex(Indexes.descending("stars", "name"))
.printResults()

Para visualizar uma maneira alternativa de criar um índice composto, consulte a seção Índices compostos .

Para criar uma especificação para um índice composto, use o método de ajuda estática Indexes.compoundIndex() .

Observação

Para criar uma especificação para um índice composto onde todas as chaves são ascendentes, você pode utilizar o método ascending() . Para criar uma especificação para um índice composto onde todas as chaves são descendentes, você pode utilizar o método descending() .

O exemplo seguinte cria um índice composto no campo stars em ordem decrescente e no campo name em ordem crescente:

collection.createIndex(
Indexes.compoundIndex(Indexes.descending("stars"),
Indexes.ascending("name")))
.printResults()

MongoDB fornece índices de texto para dar suporte ao texto Atlas Search de conteúdo de string . Os índices de texto podem incluir qualquer campo cujo valor seja uma string ou uma array de elementos da string. Para criar uma especificação para um índice de texto, use o método auxiliar Indexes.text() .

O exemplo seguinte cria um índice de texto no campo name:

collection.createIndex(Indexes.text("name"))
.printResults()

Para saber mais sobre índices de texto, consulte Índices de texto no manual do servidor.

Para criar uma especificação para um índice de índice com hash, use o método de ajuda estática Indexes.hashed() .

O exemplo seguinte cria um índice com hash no campo _id :

collection.createIndex(Indexes.hashed("_id"))
.printResults()

Para saber mais sobre índices de hash, consulte Índices de hash no manual do servidor.

Para suportar queries geoespaciais, MongoDB suporta vários índices geoespaciais. Para saber mais sobre índices geoespaciais, consulte Índices geoespaciais no manual do servidor.

Para criar uma especificação para um índice 2dsphere , use o método auxiliar estático Indexes.geo2dsphere() .

O seguinte exemplo cria um índice 2dsphere no campo contact.location:

collection.createIndex(Indexes.geo2dsphere("contact.location"))
.printResults()

Além do documento de especificação do índice, o método createIndex() pode usar um documento de opções de índice que direciona o driver a criar índices únicos ou índices parciais.

O driver fornece a classe IndexOptions para especificar várias opções de índice.

Adicione a seguinte declaração de importação ao seu código para criar uma instância do IndexOptions .

import org.mongodb.scala.model.IndexOptions

O seguinte código especifica a opção unique(true) para criar um índice único nos campos name e stars :

val indexOptions = IndexOptions().unique(true)
collection.createIndex(Indexes.ascending("name", "stars"), indexOptions)
.printResults()

Para saber mais sobre índices únicos, consulte Índices únicos no manual do servidor MongoDB.

Para criar um índice parcial, inclua a opção de índice partialFilterExpression .

O exemplo a seguir cria um índice parcial em documentos nos quais o valor do campo status é "A".

val partialFilterIndexOptions = IndexOptions()
.partialFilterExpression(Filters.exists("contact.email"))
collection.createIndex(
Indexes.descending("name", "stars"), partialFilterIndexOptions)
.printResults()

Para saber mais sobre índices parciais, consulte Índices parciais no manual do servidor.

Use o método listIndexes() para obter uma lista de índices. O seguinte código lista os índices na coleção:

collection.listIndexes().printResults()

Para saber mais sobre outras opções de índice, consulte Propriedades do índice no manual do servidor.

Voltar

Bancos de dados e coleções

Próximo

Ler operações