Otimizar consultas usando índices
Nesta página
Visão geral
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 .
Aplicativo de amostra
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:
Verifique se você tem o driver Scala instalado em seu projeto. Consulte o guia Download e instalação para saber mais.
Copie o seguinte código e cole-o em um novo arquivo
.scala
.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() } }
Índice de campo único
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 .
Índice composto
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 .
Multikey Index
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.
Índice Geoespacial
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 .
Índice de queda
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))
Gerenciamento do índice do Atlas Search
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 .
Criar Índice 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))
Listar índices de pesquisa
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") })
Atualizar índices de pesquisa
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))
Excluir índices Atlas Search
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))
Documentação da API
Para saber mais sobre os métodos ou objetos usados neste guia, consulte a seguinte documentação da API: