Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Multikey Indexes

Los índices multiclave son índices que mejoran el rendimiento de las queries en campos que contienen arreglos. Se puede crear un índice multiclave en una colección utilizando el createIndex() método y la misma sintaxis que usa para crear un índice de un solo campo.

Al crear un índice multiclave, debes especificar los siguientes detalles:

  • Los campos sobre los que crear el índice

  • El orden de clasificación para cada campo (ascendente o descendente)

Los ejemplos de esta guía usan la colección movies en la base de datos sample_mflix de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación Scala, crea un MongoClient que se conecte a un clúster de Atlas y asigna los siguientes valores a tus variables database y collection:

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

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.

Para ejecutar los ejemplos en esta guía, debes incluir las siguientes instrucciones de importación en tu archivo:

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

Utiliza el método createIndex() para crear un índice múltiple. El siguiente ejemplo crea un índice en orden ascendente en el campo cast:

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

Puedes verificar que el índice se creó llamando al método listIndexes(). Deberías ver un índice para cast en la lista, como se muestra en la siguiente salida:

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"}

A continuación, se muestra un ejemplo de una query que está cubierta por el índice creado en el 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 más sobre los índices multiclave, consulta Índices multiclave en el manual del MongoDB Server.

Para ver ejemplos ejecutables que demuestran cómo gestionar índices, consulte Optimizando consultas utilizando índices.

Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API:

Volver

Compuesto

En esta página