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

Otimizar consultas usando índices

Nesta página

  • Visão geral
  • Aplicativo de amostra
  • Índice de campo único
  • Índice composto
  • Multikey Index
  • Índice Geoespacial
  • Índice de queda
  • Gerenciamento do índice do Atlas Search
  • Criar Índice de Atlas Search
  • Listar índices de pesquisa
  • Atualizar índices de pesquisa
  • Excluir índices Atlas Search
  • Documentação da API

Nesta página, você pode ver exemplos de código copiáveis que mostram como gerenciar diferentes tipos de índices usando o Driver MongoDB Scala.

Para usar um exemplo desta página, copie o exemplo de código no aplicação de amostra ou em seu próprio aplicação. Certifique-se de substituir todos os espaços reservados nos exemplos de código, como <connection string URI>, pelos valores relevantes para sua implantação do MongoDB .

Você pode usar o seguinte aplicação de amostra para testar o código nesta página. Para usar o aplicação de amostra , execute as seguintes etapas:

  1. Verifique se você tem o driver Scala instalado em seu projeto. Consulte o guia Download e instalação para saber mais.

  2. Copie o seguinte código e cole-o em um novo arquivo .scala .

  3. Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.

import org.mongodb.scala._
import org.mongodb.scala.model.SearchIndexModel
import java.util.concurrent.TimeUnit
import scala.concurrent.Await
import scala.concurrent.duration.Duration
import org.mongodb.scala.model.Indexes
object SearchIndexes {
def main(args: Array[String]): Unit = {
// Create a new client and connect to the server
val mongoClient = MongoClient("<connection string URI>")
val database = mongoClient.getDatabase("<database name>")
val collection = database.getCollection("<collection name>")
// Start example code here
// End example code here
Thread.sleep(1000)
mongoClient.close()
}
}

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

val index = Indexes.ascending("<field name>")
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para saber mais sobre índices de campo único, consulte o guia Índices de campo único .

O exemplo seguinte cria um índice composto nos dois campos especificados.

val index = Indexes.compoundIndex(
Indexes.descending("<field name 1>"),
Indexes.ascending("<field name 2>")
)
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para saber mais sobre índices compostos, consulte o guia Índices compostos .

O exemplo a seguir cria um índice de múltiplas chaves no campo com valor de array especificado:

val index = Indexes.ascending("<field name>")
val observable = collection.createIndex(index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para saber mais sobre índices de várias chaves, consulte o guia Índices de várias chaves.

O exemplo seguinte cria um índice dsphere do 2no campo especificado que contém objetos GeoJSON:

val observable = collection.createIndex(Indexes.geo2dsphere("<2d index>"))
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para obter mais informações sobre 2índices dsphere, consulte o guia 2Índices dsphere no manual do MongoDB Server .

Para obter mais informações sobre o tipo GeoJSON, consulte o guia Objetos GeoJSON no manual do MongoDB Server .

O exemplo a seguir exclui um índice com o nome especificado:

val observable = collection.dropIndex("<index name>")
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

As seções a seguir contêm exemplos de código que descrevem como gerenciar índices de Atlas Search .

Para saber mais sobre índices de pesquisa, consulte o guia Índices de Atlas Search .

O exemplo seguinte cria um índice do Atlas Search no campo especificado:

val index = Document("mappings" -> Document("dynamic" -> <boolean value>))
val observable = collection.createSearchIndex("<index name>", index)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

O exemplo abaixo imprime uma lista de índices do Atlas Search na collection especificada:

val observable = collection.listSearchIndexes()
observable.subscribe(new Observer[Document] {
override def onNext(index: Document): Unit = println(index.toJson())
override def onError(e: Throwable): Unit = println("Error: " + e.getMessage)
override def onComplete(): Unit = println("Completed")
})

O exemplo seguinte atualiza um índice do Atlas Search existente com a nova definição de índice especificada:

val updateIndex = Document("mappings" -> Document("dynamic" -> false))
val observable = collection.updateSearchIndex("<index to update>", updateIndex)
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

O exemplo seguinte exclui um índice do Atlas Search com o nome especificado:

val observable = collection.dropSearchIndex("<index name>")
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para saber mais sobre os métodos ou objetos usados neste guia, consulte a seguinte documentação da API:

Voltar

Operações em conjuntos de réplicas