store También almacenan el valor de un campo específico o conjunto de campos, ordenados por el valor del campo como se especifica en el índice. MongoDB permite indexar un campo que contiene un valor de array mediante la creación de una clave de índice para cada elemento de la array , este tipo de indexación se denomina índices multiclave. Admite consultas eficientes contra campos de array. Se puede construir sobre arrays que contienen valores escalares (como strings, números, etc.) y documentos anidados.
¿Cómo crear un índice multiclave?
En MongoDB, podemos crear índices multiclave usando el método createIndex()
Sintaxis:
db.Collection_name.createIndex({filed_name: 1/ -1})
Puntos importantes:
- Si un campo indexado es una array, MongoDB creará automáticamente un índice de varias claves para ese campo.
- No se le permite especificar un índice de clave múltiple como índice de clave de fragmento.
- En MongoDB, los índices hash no son índices multiclave.
- El índice multiclave no puede admitir el operador $expr.
- En MongoDB, si una consulta de filtro especifica la coincidencia exacta para una array como un todo, entonces MongoDB escanea el índice multiclave para buscar el primer elemento de la array de cantera. Después de escanear el índice multiclave para buscar el primer elemento de la array de cantera, MongoDB recupera los documentos que contienen el primer elemento y luego los filtra para encontrar el documento cuya array coincida con la consulta dada. En lugar de escanear el índice multiclave para encontrar la array completa.
Ejemplos:
En el siguiente ejemplo, estamos trabajando con:
Base de datos: gfg
Colecciones: estudiante
Documento: Tres documentos contienen los detalles de los estudiantes
- Creación de un índice multiclave:
Ahora creamos un índice múltiple con la ayuda del método createIndex() en el idioma del campo:
db.student.createIndex({language:1})
Después de indexar, verificaremos el índice usando el método getIndexes():
- Indexación de una array con el documento incrustado:
Se le permite crear un índice de claves múltiples en un campo de array que contiene documentos/objetos anidados.
db.student.createIndex({"details.age":1, "details.branch":1})
Aquí, creamos el índice multiclave en los campos «detalles.edad» y «detalles.sucursal».
Después de indexar, verificaremos el índice usando el método getIndexes():
Limitaciones:
- Cuando está creando un índice multiclave compuesto, cada documento indexado debe contener como máximo un campo indexado cuyo valor sea una array.
- No está permitido crear un índice multiclave compuesto si más de un campo indexado de un documento es una array.
- Cuando el índice multiclave compuesto ya existe, no se le permite insertar un documento que rompa las restricciones.
- Cuando un campo es una array de documentos, puede indexar un documento incrustado para crear un índice compuesto, pero como máximo un campo indexado puede ser una array.
Publicación traducida automáticamente
Artículo escrito por KapilChhipa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA