MongoDB con controladores
Esta página documenta a mongosh . Para ver el método equivalente en un driver de MongoDB, se debe consultar la página correspondiente al lenguaje de programación:
Definición
db.collection.createIndexes( [ keyPatterns ], options, commitQuorum )Crea uno o más índices en una colección.
db.collection.createIndexes()toma los siguientes parámetros:ParameterTipoDescripciónkeyPatternsDocumento
Un arreglo que contiene documentos de especificaciones de índices. Cada documento contiene pares de campo y valor donde el campo es la clave del índice y el valor describe el tipo de índice para ese campo. Para un índice ascendente en un campo, especifica un valor de
1; para un índice descendente, especifica un valor de-1.MongoDB admite varios tipos diferentes de índices, incluyendo Índices de texto, geoespaciales y hash. Consulte los tipos de índice para obtener más información.
Cambiado en la versión 4.2: MongoDB 4.2 índices comodín admiten cargas de trabajo donde los usuarios consultan campos personalizados o una gran variedad de campos en una colección:
Para crear un índice comodín en todos los campos y subcampos de un documento, especifique
{ "$**" : 1 }como clave de índice. No se puede especificar una clave de índice descendente al crear un índice comodín.También puedes incluir o excluir campos específicos y sus subcampos del índice usando el parámetro opcional
wildcardProjection.Los índices comodín omiten el campo
_idpor defecto. Para incluir el campo_iden el índice comodín, debes incluirlo explícitamente en el documentowildcardProjection:{ "wildcardProjection" : { "_id" : 1, "<field>" : 0|1 } } Con la excepción de incluir explícitamente el campo
_id, no se pueden combinar instrucciones de inclusión y exclusión en el documentowildcardProjection.Puede crear un índice comodín en un campo específico y sus subrutas especificando la ruta completa a ese campo como clave de índice y agregando
"$**"a la ruta:{ "path.to.field.$**" : 1 }No se puede especificar una clave de índice descendente al crear un índice comodín.
La sintaxis del índice comodín específico de la ruta no es compatible con la opción
wildcardProjection. No puede especificar inclusiones ni exclusiones adicionales en la ruta especificada.
La clave del índice comodín debe usar una de las sintaxis listadas arriba. Por ejemplo, no se puede especificar una clave de índice compuesto. Para documentación más completa sobre índices comodín, incluyendo restricciones sobre su creación, consulta Restricciones de índices comodín.
La
mongodfeatureCompatibilityVersion debe ser4.2para crear índices comodín. Para obtener instrucciones sobre cómo configurar la compatibilidad de características entre versiones, consulta Establecer la compatibilidad de características entre versiones en las implementaciones de MongoDB 6.0.Para obtener más información sobre cómo crear índices comodín, consulta Índices comodín.
optionsDocumento
opcional. Un documento que contiene un conjunto de opciones que controla la creación de los índices. Consulta Opciones para obtener detalles.
entero o cadena de texto
Opcional. El número mínimo de nodos votantes con datos de un set de réplicas que contienen datos (es decir, quórum de confirmación), incluido el primario, que debe informar de una creación de índices exitosa antes de que el primario marque el
indexescomo listo. Un nodo "votante" es cualquier nodo del set de réplicas dondemembers[n].voteses mayor que0.Admite los siguientes valores:
"votingMembers"- todos los nodos votantes con datos del set de réplicas (por defecto)."majority"- una mayoría simple de los nodos votantes con datos del set de réplicas.<int>- un número específico de nodos votantes con datos del set de réplicas.0- Desactiva el comportamiento de votación por quórum. Los miembros inician la creación de índices simultáneamente, pero no votan ni esperan el quórum antes de completar la creación de índices. Si inicia una creación de índices con un quórum de confirmación de0, no podrá modificar posteriormente el quórum de confirmación usandosetIndexCommitQuorum.Un nombre de etiqueta de un set de réplicas.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Stable API
Cuando se debe utilizar Stable API V1:
No puede especificar ninguno de los siguientes campos en el documento
options:backgroundbucketSizesparsestorageEngine
No puedes crear índices de texto.
Los tipos de índice no admitidos mencionados anteriormente son ignorados por el planificador de consultas en modo estricto. Por ejemplo, intentar usar un índice
sparseconcursor.hint()dará como resultado el siguiente errorBadValue:planner returned error :: caused by :: hint provided does not correspond to an existing index
opciones
El documento options contiene un conjunto de opciones que controlan la creación de los índices. Los diferentes tipos de índices pueden tener opciones adicionales específicas para ese tipo.
Se pueden especificar múltiples opciones de índice en el mismo documento. Sin embargo, si se especifican varios documentos de opción, la operación db.collection.createIndexes() fallará.
Se debe considerar la siguiente operación de db.collection.createIndexes():
db.collection.createIndexes( [ { "a": 1 }, { "b": 1 } ], { unique: true, sparse: true, expireAfterSeconds: 3600 } )
Si la especificación de opciones se hubiera dividido en varios documentos como este: { unique: true }, { sparse: true, expireAfterSeconds: 3600 }, la operación de creación del índice habría fallado.
Importante
Cuando se especifican opciones en db.collection.createIndexes(), las opciones se aplican a todos los índices especificados. Por ejemplo, si especificas una opción de intercalación, todos los índices creados incluirán esa intercalación.
db.collection.createIndexes() devolverá un error si intentas crear índices con opciones incompatibles o demasiados argumentos. Consulta las descripciones de las opciones para obtener más información.
Opciones para todos los tipos de índices
Las siguientes opciones están disponibles para todos los tipos de índice, a menos que se especifique lo contrario:
Parameter | Tipo | Descripción | |
|---|---|---|---|
| booleano | Opcional. Especifica que cada índice especificado en la Especifica La opción no está disponible para índices encriptados. | |
| string | Opcional. El nombre del índice. Si no se especifica, MongoDB genera un nombre de índice concatenando los nombres de los campos indexados y el orden de clasificación. NotaSe cambió en MongoDB 4.2MongoDB elimina el límite de longitud de nombre de índice de un máximo de 127 bytes. Las opciones especificadas para | |
| Documento | opcional. Si se especifica, los índices solo hacen referencia a los documentos que coincidan con la expresión del filtro. Consulte Índices Parciales para obtener más información. Una expresión de filtro puede incluir:
Puedes especificar una opción | |
| booleano | opcional. Si Los siguientes tipos de índices son escasos por defecto e ignoran esta opción: Para un índice compuesto que incluye TipLos índices parciales ofrecen un superconjunto de la funcionalidad de los índices dispersos. A menos que tu aplicación tenga un requisito específico, utiliza índices parciales en lugar de índices dispersos. | |
| entero | Opcional. Especifica un valor, en segundos, como tiempo de vida (TTL) para controlar cuánto tiempo MongoDB retiene los documentos en esta colección. Esta opción solo se aplica a los índices TTL. Consulta Caducar datos de colecciones configurando TTL para obtener más información. Si utilizas índices TTL creados antes de MongoDB 5.0, o si deseas sincronizar datos creados en MongoDB 5.0 con una versión anterior a la instalación 5.0, consulta Índices configurados usando NaN para evitar problemas de configuración errónea. El valor del índice TTL | |
booleano | Opcional. Una bandera que determina si el índice está oculto para el planificador de queries. Un índice oculto no se evalúa como parte de la selección del plan de la query. El valor por defecto es Para utilizar la opción | ||
| Documento | opcional. Permite a los usuarios configurar el motor de almacenamiento para los índices creados. La opción Las opciones de configuración del motor de almacenamiento especificadas al crear índices se validan y se registran en el oplog durante la replicación para admitir conjuntos de réplicas con miembros que utilizan diferentes motores de almacenamiento. |
Opción para intercalación
Parameter | Tipo | Descripción | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Documento | Opcional. Especifica la intercalación para el índice. La intercalación permite a los usuarios especificar reglas propias del lenguaje para la comparación de strings, como reglas para el uso de mayúsculas y minúsculas y marcas de acento. Si has especificado una intercalación a nivel de colección, entonces:
La opción de intercalación tiene la siguiente sintaxis: Al especificar la intercalación, el campo |
Los siguientes índices solo soportan la comparación binaria simple y no soportan la intercalación:
text indexes,
geoHaystack indexes.
Tip
Para crear un text, un 2d, o un índice geoHaystack en una colección que tenga una intercalación no simple, debes especificar explícitamente {collation: {locale: "simple"} } al crear el índice.
Uso de la intercalación y del índice
Si has especificado una intercalación a nivel de colección, entonces:
Si no especificas una intercalación al crear el índice, MongoDB crea el índice con la intercalación por defecto de la colección.
Si especificas una intercalación al crear el índice, MongoDB crea el índice con la intercalación especificada.
Tip
Al especificar una intercalación strength de 1 o 2, puedes crear un índice insensible a mayúsculas y minúsculas. El índice con una intercalación strength de 1 es insensible tanto a diacríticos como a mayúsculas.
Puedes crear múltiples índices en las mismas claves con diferentes intercalaciones. Para crear índices con el mismo patrón de clave pero diferentes intercalaciones, debes proporcionar nombres de índice únicos.
Para utilizar un índice para las comparaciones de cadenas, una operación también debe especificar la misma intercalación. Es decir, un índice con una intercalación no puede soportar una operación que realice comparaciones de strings en los campos indexados si la operación especifica una intercalación diferente.
Advertencia
Debido a que los índices configurados con intercalación utilizan claves de intercalación ICU para lograr el orden de clasificación, las claves de índice que consideran la intercalación pueden ser más grandes que las claves de índice para los índices sin intercalación.
Una colección restaurants tiene los siguientes documentos:
db.restaurants.insertMany( [ { _id: 1, category: "café", status: "Open" }, { _id: 2, category: "cafe", status: "open" }, { _id: 3, category: "cafE", status: "open" } ] )
La colección restaurants tiene un índice en un campo de string category con la intercalación de la localización "fr".
db.restaurants.createIndex( { category: 1 }, { collation: { locale: "fr" } } )
La siguiente query, que especifica la misma intercalación que el índice, puede utilizar el índice:
db.restaurants.find( { category: "cafe" } ).collation( { locale: "fr" } )
Sin embargo, la siguiente operación de query, que por defecto utiliza el intercalador binario "simple", no puede usarse el índice:
db.restaurants.find( { category: "cafe" } )
Para un índice compuesto donde las claves prefijo del índice no son cadenas, arreglos ni documentos incrustados, una operación que especifique una intercalación diferente puede seguir utilizando el índice para soportar comparaciones en las claves prefijo del índice.
Por ejemplo, la colección restaurants tiene un índice compuesto en los campos numéricos score y price y el campo de string category; el índice se crea con la localización de intercalación "fr" para comparaciones de strings:
db.restaurants.createIndex( { score: 1, price: 1, category: 1 }, { collation: { locale: "fr" } } )
Las siguientes operaciones, que utilizan la intercalación binaria "simple" para las comparaciones de strings, pueden usar el índice:
db.restaurants.find( { score: 5 } ).sort( { price: 1 } ) db.restaurants.find( { score: 5, price: { $gt: Decimal128( "10" ) } } ).sort( { price: 1 } )
La siguiente operación, que utiliza la intercalación binaria "simple" para las comparaciones de string en el campo category indexado, puede usar el índice para cumplir solo con la parte score: 5 de la query:
db.restaurants.find( { score: 5, category: "cafe" } )
Para confirmar si una consulta ha utilizado un índice, ejecuta la consulta con la opción explain().
Importante
Las coincidencias con claves de documentos, incluidas las claves de documentos incrustadas, utilizan una comparación binaria simple. Esto significa que una query para una clave como "type.café" no coincidirá con la clave "type.cafe", independientemente del valor que se establezca para el parámetro strength.
Opciones para text Índices
Las siguientes opciones están disponibles solo para los índices de texto:
Parameter | Tipo | Descripción |
|---|---|---|
| Documento | Opcional. Para los índices de texto, un documento que contiene pares de campo y peso. El peso es un número entero que tiene un rango de 1 a 99,999 y denota la importancia del campo en relación con los otros campos indexados en términos de la puntuación. Puedes especificar pesos para algunos o todos los campos indexados. Consulta Asignar pesos a los resultados de búsqueda de texto en implementaciones autogestionadas para ajustar las puntuaciones. El valor es por defecto A partir de MongoDB 5.0, la opción pesos solo está permitida para los índices de texto. |
| string | Opcional. Para los índices texto, el lenguaje que determina la lista de palabras vacías y las reglas para el stemmer y el tokenizador. Consulta Lenguajes de búsqueda de texto en implementaciones autogestionadas para ver los lenguajes disponibles y Especifica el lenguaje por defecto para un índice de texto en implementaciones autogestionadas para obtener más información y ejemplos. El valor por defecto es |
| string | opcional. Para los índices de texto, el nombre del campo, en los documentos de la colección, que contiene el lenguaje sobrescrito para el documento. El valor por defecto es |
| entero | Opcional. El número de versión del índice Para las versiones disponibles, consulte Versiones. |
Opciones para 2dsphere Índices
La siguiente opción está disponible únicamente para índices 2dsphere:
Parameter | Tipo | Descripción |
|---|---|---|
| entero | Opcional. El número de versión del índice Para ver las versiones disponibles, consulta Versiones. |
Opciones para 2d Índices
Las siguientes opciones están disponibles solo para los índices 2d:
Parameter | Tipo | Descripción |
|---|---|---|
| entero | Opcional. Para los índices 2d, el número de cifras significativas del valor geohash almacenado de los datos de ubicación. El valor |
| Número | opcional. Para los índices 2d, el límite inferior inclusivo para los valores de longitud y latitud. El valor por defecto es |
| Número | opcional. Para los índices 2d, el límite superior inclusivo de los valores de longitud y latitud. El valor por defecto es |
Opciones para geoHaystack Índices
La siguiente opción está disponible solo para geoHaystack índices:
Parameter | Tipo | Descripción |
|---|---|---|
| Número | Para los índices geoHaystack, especifique el número de unidades dentro de las cuales agrupar los valores de ubicación; es decir, agrupe en el mismo contenedor aquellos valores de ubicación que estén dentro del número especificado de unidades entre sí. El valor debe ser mayor que 0. |
Nota
Eliminado en MongoDB 5.0
MongoDB 5.0 elimina el geoHaystack índice obsoleto y el geoSearch comando. En su lugar, utilice un índice 2D con o uno de $geoNear los operadores de consulta geoespaciales compatibles.
Actualizar su instancia de MongoDB a 5.0 y configurar featureCompatibilityVersion en 5.0 eliminará cualquier índice geoHaystack preexistente.
Opciones para índices wildcard
La siguiente opción está disponible solo para índices comodín:
Parameter | Tipo | Descripción | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Documento | opcional. Permite a los usuarios incluir o excluir rutas específicas de campos del índice comodín. Esta opción solo es válida si se crea un índice comodín. La opción El
Los índices comodín omiten el campo Con la excepción de incluir explícitamente el campo Las opciones especificadas para |
Comportamientos
Simultaneidad
Cambiado en la versión 4.2.
MongoDB utiliza un proceso de compilación optimizado que obtiene y mantiene un bloqueo exclusivo en la colección especificada al inicio y al final de la creación del índice. Todas las operaciones posteriores en la colección deben esperar a que createIndexes() libere el bloqueo exclusivo. createIndexes() permite la intercalación de operaciones de lectura y escritura durante la mayor parte de la creación de índices.
Para obtener más información sobre el comportamiento de bloqueo de createIndexes(), consulta Creación de Índices en Colecciones Poboadas.
Recreación de un índice existente
Si llamas a db.collection.createIndexes() para un índice o índices que ya existen, MongoDB no recrea el índice o índices ya existentes.
Opciones del índice
Opciones sin intercalación y no ocultas
Con la excepción de la opción de intercalación, si se crea un índice con un conjunto de opciones de índice y luego intenta volver a crear el mismo índice, pero con opciones de índice diferentes, MongoDB no cambiará las opciones ni volverá a crear el índice.
La opción oculta se puede cambiar sin eliminar ni volver a crear el índice. Consulta Opción oculta.
Para cambiar las otras opciones del índice, se debe descartar el índice existente con db.collection.dropIndex() antes de ejecutar db.collection.createIndexes() con las nuevas opciones.
Opción de intercalación
Puedes crear múltiples índices en las mismas claves con diferentes intercalaciones. Para crear índices con el mismo patrón de clave pero diferentes intercalaciones, debes proporcionar nombres de índice únicos.
Opción oculta
Nuevo en la versión 4.4.
Para ocultar o mostrar índices existentes, puede utilizar los siguientes mongosh métodos:
Por ejemplo,
Para cambiar la opción
hiddende un índice atrue, utiliza el métododb.collection.hideIndex():db.restaurants.hideIndex( { borough: 1, ratings: 1 } ); Para cambiar la opción
hiddende un índice afalse, utiliza el métododb.collection.unhideIndex():db.restaurants.unhideIndex( { borough: 1, city: 1 } );
Índices comodín
Nuevo en la versión 4.2.
Los índices comodín omiten el campo
_idpor defecto. Para incluir el campo_iden el índice comodín, debes incluirlo explícitamente en el documentowildcardProjection:{ "wildcardProjection" : { "_id" : 1, "<field>" : 0|1 } } Con la excepción de incluir explícitamente el campo
_id, no se pueden combinar instrucciones de inclusión y exclusión en el documentowildcardProjection.La
mongodfeatureCompatibilityVersion debe ser4.2para crear índices comodín. Para obtener instrucciones sobre cómo configurar la compatibilidad de características entre versiones, consulta Establecer la compatibilidad de características entre versiones en las implementaciones de MongoDB 6.0.Los índices comodín no admiten los siguientes tipos de índice o propiedades:
Nota
Los índices comodín son distintos de los índices de texto comodín y son incompatibles con ellos. No admiten consultas con el
$textoperador.Para obtener documentación completa sobre las restricciones de índice comodín, consulte Restricciones de índice comodín.
Para obtener ejemplos de creación de índices comodín, consulte Crear un índice comodín. Para obtener la documentación completa sobre Índices comodín, consulta Índices comodín.
Transacciones
Puede crear colecciones e índices dentro de una transacción distribuida si la transacción es no es una transacción de escritura entre particiones.
Para usar db.collection.createIndexes() en una transacción, la transacción debe usar el nivel de consistencia de lectura "local". Si especificas un nivel de consistencia de lectura distinto de "local", la transacción fallará.
Ejemplo
Tip
db.collection.createIndex() para ver ejemplos de varias especificaciones de índice.
Crear índices sin opciones
Considere una colección restaurants que contiene documentos que se parecen a los siguientes:
db.restaurants.insertOne ( { location: { type: "Point", coordinates: [-73.856077, 40.848447] }, name: "Morris Park Bake Shop", cuisine: "Cafe", borough: "Bronx", } )
El siguiente ejemplo crea dos índices en la restaurants colección: un índice ascendente en el borough campo y un índice 2dsphere en el location campo.
db.restaurants.createIndexes([{"borough": 1}, {"location": "2dsphere"}])
Crear índices con la intercalación especificada
El siguiente ejemplo crea dos índices en la colección products: un índice ascendente en el campo manufacturer y un índice ascendente en el campo category. Ambos índices usan una intercalación que especifica la localización fr y la fuerza de comparación 2:
db.products.createIndexes( [ { "manufacturer": 1}, { "category": 1 } ], { collation: { locale: "fr", strength: 2 } })
Para consultas u operaciones de ordenamiento en las claves indexadas que usan las mismas reglas de intercalación, MongoDB puede utilizar el índice. Para obtener detalles, consulta intercalación y Uso del Índice.
Crear un índice comodín
Novedad en la versión 4.2: La compatibilidad de función mongod featureCompatibilityVersion debe establecerse en 4.2 para crear índices comodín. Para obtener instrucciones sobre cómo configurar la fCV, consulte establecer la compatibilidad de características entre versiones en las implementaciones de MongoDB 6.0.
Para la documentación completa sobre los Índices comodín, consulta Índices comodín.
Las siguientes listas muestran ejemplos de la creación de índices comodín:
Crear un índice comodín en una ruta de un solo campo
Considera una colección products_catalog donde los documentos pueden contener un campo product_attributes. El product_attributes campo puede contener campos anidados arbitrarios, incluidos documentos incrustados y arreglos:
db.products_catalog.insertMany( [ { _id : ObjectId("5c1d358bf383fbee028aea0b"), product_name: "Blaster Gauntlet", product_attributes: { price: { cost: 299.99, currency: "USD" } } }, { _id: ObjectId("5c1d358bf383fbee028aea0c"), product_name: "Super Suit", product_attributes: { superFlight: true, resistance: [ "Bludgeoning", "Piercing", "Slashing" ] } } ] )
La siguiente operación crea un índice comodín en el campo product_attributes:
use inventory db.products_catalog.createIndexes( [ { "product_attributes.$**" : 1 } ] )
Con este índice comodín, MongoDB indexa todos los valores escalares de product_attributes. Si el campo es un documento o arreglo anidado, el índice comodín recorre el documento/arreglo e indexa todos los campos escalares del documento/arreglo.
El índice comodín puede brindar soporte a queries arbitrarias de un solo campo en product_attributes o en uno de sus campos anidados:
db.products_catalog.find( { "product_attributes.superFlight" : true } ) db.products_catalog.find( { "product_attributes.maxSpeed" : { $gt : 20 } } ) db.products_catalog.find( { "product_attributes.elements" : { $eq: "water" } } )
Nota
La sintaxis del índice comodín específica de la ruta es incompatible con la opción wildcardProjection. Consulte la documentación de parámetros para obtener más información.
Crear un índice comodín en todas las rutas de campos
Considera una colección products_catalog donde los documentos pueden contener un campo product_attributes. El product_attributes campo puede contener campos anidados arbitrarios, incluidos documentos incrustados y arreglos:
db.products_catalog.insertMany( [ { _id : ObjectId("5c1d358bf383fbee028aea0b"), product_name: "Blaster Gauntlet", product_attributes: { price: { cost: 299.99, currency: "USD" } } }, { _id: ObjectId("5c1d358bf383fbee028aea0c"), product_name: "Super Suit", product_attributes: { superFlight: true, resistance: [ "Bludgeoning", "Piercing", "Slashing" ] } } ] )
La siguiente operación crea un índice comodín en todos los campos escalares (excluyendo el campo _id):
use inventory db.products_catalog.createIndexes( [ { "$**" : 1 } ] )
Con este índice comodín, MongoDB indexa todos los campos escalares de cada documento de la colección. Si un campo dado es un documento o arreglo anidado, el índice comodín recorre el documento/arreglo e indexa todos los campos escalares del documento/arreglo.
El índice creado puede soportar queries sobre cualquier campo arbitrario dentro de los documentos de la colección:
db.products_catalog.find( { "product_price" : { $lt : 25 } } ) db.products_catalog.find( { "product_attributes.elements" : { $eq: "water" } } )
Nota
Los índices comodín omiten el campo _id por defecto. Para incluir el campo _id en el índice comodín, se debe incluir explícitamente en el documento wildcardProjection. Consulta la documentación de parámetros para obtener más información.
Crea un índice comodín en varias rutas de campo específicas
Considera una colección products_catalog donde los documentos pueden contener un campo product_attributes. El product_attributes campo puede contener campos anidados arbitrarios, incluidos documentos incrustados y arreglos:
db.products_catalog.insertMany( [ { _id : ObjectId("5c1d358bf383fbee028aea0b"), product_name: "Blaster Gauntlet", product_attributes: { price: { cost: 299.99, currency: "USD" } } }, { _id: ObjectId("5c1d358bf383fbee028aea0c"), product_name: "Super Suit", product_attributes: { superFlight: true, resistance: [ "Bludgeoning", "Piercing", "Slashing" ] } } ] )
La siguiente operación crea un índice comodín y utiliza la opción wildcardProjection para incluir únicamente los valores escalares de los campos product_attributes.elements y product_attributes.resistance en el índice.
use inventory db.products_catalog.createIndexes( [ { "$**" : 1 } ], { "wildcardProjection" : { "product_attributes.elements" : 1, "product_attributes.resistance" : 1 } } )
Mientras que el patrón clave "$**" cubre todos los campos del documento, el campo wildcardProjection limita el índice solo a los campos incluidos. Para obtener documentación completa sobre wildcardProjection, consulta Opciones para wildcard índices.
Si un campo es un documento o un arreglo anidado, el índice comodín recorre el documento/arreglo e indexa todos los campos escalares del documento/arreglo.
El índice creado puede soportar queries en cualquier campo escalar incluido en el wildcardProjection:
db.products_catalog.find( { "product_attributes.elements" : { $eq: "Water" } } ) db.products_catalog.find( { "product_attributes.resistance" : "Bludgeoning" } )
Nota
Los índices comodín no soportan mezclar instrucciones de inclusión y exclusión en el documento wildcardProjection excepto cuando se incluye explícitamente el campo _id. Para obtener más información sobre wildcardProjection, consulta la documentación de los parámetros.
Crear un índice comodín que excluya varias rutas de campos específicos
Considera una colección products_catalog donde los documentos pueden contener un campo product_attributes. El product_attributes campo puede contener campos anidados arbitrarios, incluidos documentos incrustados y arreglos:
db.products_catalog.insertMany( [ { _id : ObjectId("5c1d358bf383fbee028aea0b"), product_name: "Blaster Gauntlet", product_attributes: { price: { cost: 299.99, currency: "USD" } } }, { _id: ObjectId("5c1d358bf383fbee028aea0c"), product_name: "Super Suit", product_attributes: { superFlight: true, resistance: [ "Bludgeoning", "Piercing", "Slashing" ] } } ] )
La siguiente operación crea un índice comodín y utiliza el documento wildcardProjection para indexar todos los campos escalares de cada documento en la colección, excluyendo los campos product_attributes.elements y product_attributes.resistance:
use inventory db.products_catalog.createIndexes( [ { "$**" : 1 } ], { "wildcardProjection" : { "product_attributes.elements" : 0, "product_attributes.resistance" : 0 } } )
Mientras que el patrón clave "$**" incluye todos los campos del documento, el campo wildcardProjection excluye los campos especificados del índice. Para obtener documentación completa sobre wildcardProjection, consulte Opciones para índices de wildcard.
Si un campo es un documento o un arreglo anidado, el índice comodín recorre el documento/arreglo e indexa todos los campos escalares del documento/arreglo.
El índice creado puede admitir consultas en cualquier campo escalar excepto aquellos excluidos wildcardProjection por:
db.products_catalog.find( { "product_attributes.maxSpeed" : { $gt: 25 } } ) db.products_catalog.find( { "product_attributes.superStrength" : true } )
Nota
Los índices comodín no soportan mezclar instrucciones de inclusión y exclusión en el documento wildcardProjection excepto cuando se incluye explícitamente el campo _id. Para obtener más información sobre wildcardProjection, consulta la documentación de los parámetros.
Crear índices con quórum de confirmación
Nota
Requiere featureCompatibilityVersion 4.4+
Cada mongod en el set de réplicas o clúster debe tener featureCompatibilityVersion configurada al menos en 4.4 para iniciar la creación de índices simultáneamente en los miembros del set de réplicas.
La creación de índices en un set de réplicas o en un clúster se realiza simultáneamente en todos los miembros del set de réplicas que contienen datos. Para clústeres fragmentados, la creación de índices solo ocurre en fragmentos que contienen datos para la colección que se está indexando. El primario requiere un número mínimo de nodos portadores de datos voting (es decir, quórum de confirmación), incluido él mismo, que deben completar la compilación antes de marcar el índice como listo para usar. Consulta creación de índices en entornos replicados para obtener más información.
Especifique el parámetro commitQuorum en la createIndexes() para establecer el número mínimo de nodos con derecho a voto que posean datos (es decir, quórum de confirmación), incluido el primario, que deben completar la creación de índices antes de que el primario marque los índices como listos. El quórum de confirmación por defecto es votingMembers, o todos los miembros del set de réplicas con capacidad de voto y que almacenan datos.
La siguiente operación crea un índice con un quórum de confirmación de "majority":
db.getSiblingDB("examples").invoices.createIndexes( { "invoices" : 1 }, { }, "majority" )
El primario marca la creación de índices como lista solo después de que una mayoría simple de nodos votantes con datos "vote" para confirmar la creación de índices. Para obtener más información sobre la creación de índices y el proceso de votación, consulta Creación de índices en entornos replicados.
Crear múltiples índices
Crea una colección de cakeSales que incluya ventas de pasteles en el estado de California (CA) y Washington (WA):
db.cakeSales.insertMany( [ { _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"), state: "CA", price: 13, quantity: 120 }, { _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"), state: "WA", price: 14, quantity: 140 }, { _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"), state: "CA", price: 12, quantity: 145 }, { _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"), state: "WA", price: 13, quantity: 104 }, { _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"), state: "CA", price: 41, quantity: 162 }, { _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"), state: "WA", price: 43, quantity: 134 } ] )
El siguiente ejemplo crea múltiples índices en la colección cakeSales:
db.cakeSales.createIndexes( [ { "type": 1 }, { "orderDate": 1 }, { "state": 1 }, { "orderDate": 1, "state": -1 } ] )
Los primeros tres índices están en campos individuales y en orden ascendente (1).
El último índice está en orderDate en orden ascendente (1) y state en orden descendente (-1).
Información Adicional
Para obtener información adicional sobre los índices, consulte:
Consulta la sección Índices de este manual para obtener la documentación completa sobre los índices y la indexación en MongoDB.
db.collection.getIndexes()para visualizar las especificaciones de los índices existentes de una colección.Índices de texto en implementaciones autogestionadas para obtener más detalles sobre la creación de índices
text.Índices geoespaciales para queries geoespaciales.
Índices TTL para la expiración de los datos.