Definición
dropIndexesCambiado en la versión 6.0.
El comando
dropIndexeselimina uno o más índices (excepto el índice en el campo_idy el último índice de clave de fragmento restante, si existe) de la colección especificada.Tip
En
mongosh, este comando también se puede ejecutar a través de los métodos auxiliaresdb.collection.dropIndex()ydb.collection.dropIndexes().Los métodos auxiliares son prácticos para los usuarios de
mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de la base de datos. En los casos en que no se necesite esta comodidad o se requieran los campos de retorno adicionales, utilice el comando de la base de datos.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente administrado 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 la compatibilidad de Atlas con 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.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { dropIndexes: <string>, index: <string|document|arrayofstrings>, writeConcern: <document>, comment: <any> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
dropIndexes | String | El nombre de la colección cuyos índices se deben descartar. |
index | string o documento o arreglo de cadenas | El índice o los índices que se van a descartar.
|
writeConcern | Documento | Opcional. Un documento que expresa el nivel de confirmación de escritura del comando |
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
Comportamiento
A partir de MongoDB, 6.0y dropIndexes generan un error si se intentan usar para eliminar el último índice compatible con clave de fragmentación restante. Pasar "*" a dropIndexes elimina todos los índices excepto el índice _id y el último índice compatible con clave de fragmentación restante, si existe.
A partir de MongoDB 5.2, puede usar dropIndexes para eliminar índices existentes en la misma colección, incluso si hay una creación en curso en otro índice. En versiones anteriores, intentar eliminar un índice diferente durante una creación de índice en curso genera un error BackgroundOperationInProgressForNamespace.
Eliminar solo las query relacionadas
La operación dropIndexes solo elimina las consultas que utilizan el índice que se está eliminando. Esto puede incluir consultas que consideran el índice como parte de la planificación de la consulta.
Bloqueo de recursos
dropIndexes obtiene un bloqueo exclusivo sobre la colección especificada durante la duración de la operación. Todas las operaciones posteriores sobre la colección deben esperar hasta que dropIndexes libere el bloqueo.
Nombres de índices
Si al método se le pasa un arreglo de nombres de índices que incluye un índice inexistente, el método genera un error sin eliminar ninguno de los índices especificados.
_id Index
No se puede descartar el índice por defecto en el campo _id.
text Indexes
Para descartar un índice de texto, especifica el nombre del índice en lugar del documento de especificación del índice.
Detener la creación de índices en curso
Si un índice especificado en dropIndexes aún se está creando, dropIndexes intenta detener la creación en curso. Detener la creación de un índice tiene el mismo efecto que eliminar el índice creado.
Para conjuntos de réplicas, ejecute dropIndexes en el nodo principal. El nodo principal detiene la compilación del índice y crea una entrada deoplog asociada llamada "abortIndexBuild". Los nodos secundarios que replican la entrada de oplog "abortIndexBuild" detienen la compilación del índice en curso y descartan la tarea de compilación. Consulte el proceso de compilación del índice para obtener documentación detallada sobre dicho proceso.
Se puede utilizar currentOp para identificar las creaciones de índices asociadas a una operación createIndexes o db.collection.createIndexes(). Consultar Operaciones de indexación activas para ver un ejemplo.
Hidden Indexes
MongoDB ofrece la capacidad de ocultar o mostrar los índices del planificador de las query. Al ocultar un índice del planificador, puedes evaluar el impacto potencial de eliminar un índice sin realmente eliminarlo.
Si después de la evaluación, el usuario decide descartar el índice, puedes descartar el índice oculto; es decir, no es necesario mostrarlo primero para descartarlo.
Sin embargo, si el impacto es negativo, el usuario puede mostrar el índice en lugar de tener que volver a crear un índice descartado. Y como los índices se mantienen en su totalidad mientras están ocultos, están disponibles de inmediato para su uso una vez que se desocultan.
Para obtener más información sobre los índices ocultos, se puede consultar Índices ocultos.
Ejemplos
Para descartar todos los índices que no sean
_id, especifica"*"para elindex.db.runCommand( { dropIndexes: "collection", index: "*" } ) Para descartar un solo índice, emite el comando especificando el nombre del índice que deseas eliminar. Por ejemplo, para descartar el índice llamado
age_1, utilice el siguiente comando:db.runCommand( { dropIndexes: "collection", index: "age_1" }) mongoshproporciona los métodos auxiliaresdb.collection.dropIndex()ydb.collection.dropIndexes():db.collection.dropIndex("age_1"); Para descartar varios índices, emita el comando especificando un arreglo con los nombres de los índices:
db.runCommand( { dropIndexes: "collection", index: [ "age_1", "age_1_status_1" ] } )