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

Multikey Indexes

Nesta página

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

Í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)

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 .

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"],...}

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.

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

Voltar

composto