Multikey Indexes
Nesta página
Visão geral
Índices multichave são índices que melhoram o desempenho de queries em campos com valor de array. Você pode criar um índice de múltiplas chaves em uma coleção utilizando o createIndex()
método e a mesma sintaxe que você utiliza para criar um índice de campo único do.
Ao criar um índice de múltiplas chaves, você deve especificar os seguintes detalhes:
Os campos nos quais criar o índice
A ordem de classificação para cada campo (crescente ou decrescente)
Dados de amostra
Os exemplos neste guia utilizam a movies
coleção do sample_mflix
no banco de dados do a partir dos conjuntos de dados de amostra do Atlas . Para acessar essa collection 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 .
Criar um índice de múltiplas chaves
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 de múltiplas chaves. O exemplo seguinte cria um índice em ordem crescente no campo cast
:
val index = Indexes.ascending("cast") val observable = collection.createIndex(index) Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
Você pode verificar se o índice foi criado chamando o método listIndexes()
. Você deve ver um índice para cast
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": {"cast": 1}, "name": "cast_1"}
O seguinte é um exemplo de uma query coberta pelo índice criado no campo cast
:
val filter = and(equal("cast", "Aamir Khan"), equal("cast", "Kajol")) collection.find(filter).first().subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
{"_id":...,"title":"Fanaa",...,"cast": ["Aamir Khan", "Kajol", "Rishi Kapoor", "Tabu"],...}
Informações adicionais
Para saber mais sobre índices de várias chaves, consulte Índices de várias chaves no manual do MongoDB Server .
Para exibir exemplos executáveis que demonstram como gerenciar índices, consulte Otimizar queries usando índices.
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: