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

Índices compostos

Nesta página

  • Visão geral
  • Dados de amostra
  • Criar um índice composto
  • Informações adicionais
  • Documentação da API

Os índices compostos contêm referências a vários campos dentro dos documentos de uma collection, melhorando o desempenho de query e classificação.

Ao criar um índice composto, você deve especificar os seguintes detalhes:

  • Os campos nos quais criar o índice

  • A ordem de classificação para cada campo (crescente ou decrescente)

Os exemplos deste guia usam a movies coleção no sample_mflix banco de dados dos conjuntos de dados de amostra do Atlas . Para acessar essa coleção a partir do seu aplicação Scala, crie um MongoClient que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database collection e:

val database: MongoDatabase = mongoClient.getDatabase("sample_mflix")
val collection: MongoCollection[Document] = database.getCollection("movies")

Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

Para executar os exemplos deste guia, inclua as seguintes declarações de importação em seu arquivo:

import org.mongodb.scala._
import org.mongodb.scala.model.Indexes
import org.mongodb.scala.model.IndexOptions._
import org.mongodb.scala.model.Filters._
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.util.{Failure, Success}
import java.util.concurrent.TimeUnit

Utilize o método createIndex() para criar um índice composto. O exemplo a seguir cria um índice em ordem decrescente no campo runtime e em ordem crescente no campo year :

val index = Indexes.compoundIndex(Indexes.descending("runtime"),
Indexes.ascending("year"))
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Você pode verificar se o índice foi criado usando o método listIndexes(). Você deve ver um índice para runtime e year na lista, conforme mostrado na seguinte saída:

collection.listIndexes().subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"v": 2, "key": {"runtime": -1, "year": 1}, "name": "runtime_-1_year_1"}

O seguinte é um exemplo de uma consulta coberta pelo índice criado nos campos runtime e year :

val filter = and(gt("runtime", 80), gt("year", 1999))
collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id":...,"runtime": 98,...,"title": "In the Mood for Love",...,"year": 2000,...}

Para saber mais sobre índices compostos, consulte Índices compostos no manual do MongoDB Server .

Para ver exemplos executáveis que demonstram como gerenciar índices, consulte Otimizar queries usando índices.

Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API:

Voltar

Campo Único