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
- Text Indexes
- Í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 queries no MongoDB. Para criar um índice em um campo ou campos, 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.
Pré-requisitos
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.
Conecte-se a um MongoDB deployment
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 .
Índice Ascendente
Para criar uma especificação para um índice ascendente, use o método de assistente estática Indexes.ascending()
.
Índice Ascendente Único
O exemplo seguinte cria um índice ascendente no campo name
:
collection.createIndex(Indexes.ascending("name")) .printResults()
Índice Ascendente Composto
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 forma alternativa de criar um índice composto, consulte a seção Índices compostos .
Índice decrescente
Para criar uma especificação de um índice descendente, use o método assistente estático Indexes.descending()
.
Índice de chave descendente única
O exemplo seguinte cria um índice descendente no campo stars
:
collection.createIndex(Indexes.descending("stars")) .printResults()
Índice de chave descendente composta
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 forma alternativa de criar um índice composto, consulte a seção Índices compostos .
Í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()
Text Indexes
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.
Índice com hash
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.
Índices geoespaciais
Para suportar queries geoespaciais, MongoDB suporta vários índices geoespaciais. Para saber mais sobre índices geoespaciais, consulte Índices geoespaciais no manual do servidor.
2dsphere
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()
IndexOptions
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
índice único
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.
Índice parcial
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.
Obter uma lista de índices em uma collection
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.