Docs Menu
Docs Home
/ /

Multikey Indexes

Los índices multiclave mejoran el rendimiento de las consultas en campos con valores de matriz. Puede crear un índice multiclave en una colección mediante createIndex() método y la misma sintaxis que utiliza para crear un índice de campo único.

Al crear un índice de múltiples claves, debe especificar los siguientes detalles:

  • Los campos en los que crear el índice

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

Los ejemplos de esta guía utilizan 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 su aplicación Scala, cree un MongoClient que se conecte a un clúster de Atlas y asigne los siguientes valores a las variables database collection y:

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 muestra, consulte la guía de introducción a MongoDB.

Para ejecutar los ejemplos de esta guía, debe incluir las siguientes declaraciones de importación en su 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

Utilice el método createIndex() para crear un índice multiclave. 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))

Puede verificar la creación del índice llamando al método listIndexes(). Debería 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"}

El siguiente es un ejemplo de una consulta 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 obtener más información sobre los índices de claves múltiples, consulte Índices de claves múltiples en el manual de MongoDB Server.

Para ver ejemplos ejecutables que demuestran cómo administrar índices, consulte Optimizar consultas mediante el uso de índices.

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

Volver

Compuesto

En esta página