MongoDB con controladores
Esta página documenta una 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.dropIndexes()Elimina el índice o los índices especificados (excepto el índice en el campo
_idy el último índice de clave de fragmento restante) de una colección.Puede utilizar este método para:
Eliminar todos los índices excepto el
_idde una colección.db.collection.dropIndexes() Eliminar un índice específico de una colección. Para especificar el índice, puede pasar el método:
El documento de especificación del índice (a menos que el índice sea un índice de texto, en cuyo caso utilice el nombre del índice para eliminarlo):
db.collection.dropIndexes( { a: 1, b: 1 } ) El nombre del índice:
db.collection.dropIndexes( "a_1_b_1" ) Tip
Para obtener los nombres de los índices, utilice el
db.collection.getIndexes()método.
Eliminar los índices especificados de una colección. Para especificar varios índices a eliminar, pase al método una matriz de nombres de índices:
db.collection.dropIndexes( [ "a_1_b_1", "a_1", "a_1__id_-1" ] ) Si la matriz de nombres de índice incluye un índice inexistente, el método genera un error sin eliminar ninguno de los índices especificados.
Tip
Para obtener los nombres de los índices, utilice el
db.collection.getIndexes()método.
El método toma el siguiente parámetro
db.collection.dropIndexes()opcional:
Comportamiento
A partir de MongoDB,6.0 db.collection.dropIndexes() genera un error si se intenta usarlo para eliminar el último índice compatible con la clave de fragmento restante. Al pasar "*" a db.collection.dropIndexes() se eliminan todos los índices excepto el _id índice y el último índice compatible con la clave de fragmento restante, si existe.
A partir de MongoDB 5.2, puedes utilizar db.collection.dropIndexes() para descartar índices existentes en la misma colección incluso si hay una construcción en curso en otro índice. En versiones anteriores, al intentar descartar un índice diferente durante la creación de índices en curso, se producía el error BackgroundOperationInProgressForNamespace.
Eliminar únicamente las consultas relacionadas
La operación solo elimina las consultas que utilizan el índice que se va a eliminar. Esto puede incluir consultas que consideran el índice como parte de la dropIndexes() planificaciónde consultas.
Bloqueo de recursos
db.collection.dropIndexes() obtiene un bloqueo exclusivo en la colección especificada por el tiempo que dure la operación. Todas las operaciones posteriores en la colección deben esperar hasta que db.collection.dropIndexes() libere el bloqueo.
Nombres de índices
Si se pasa al método una matriz de nombres de índice 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 eliminar un índice de texto, especifique 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 a db.collection.dropIndexes() todavía se está compilando, db.collection.dropIndexes() intenta detener la compilación en curso. Detener la creación de índices tiene el mismo efecto que descartar el índice creado.
Para los sets de réplicas, ejecuta db.collection.dropIndexes() en el primario. El primario aborta la creación de índices y crea una entrada de oplog asociada “abortIndexBuild”. Los secundarios que replican la entrada de oplog “abortIndexBuild” detienen la creación de índices y descartan la tarea de compilación. Consulta Proceso de creación de índices para obtener documentación detallada sobre el proceso de creación de índices.
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.