MongoDB con controladores
Definición
db.collection.dropIndexes()Descarta el índice o los índices especificados (excepto el índice en el campo
_idy el último índice de clave de partición restante) de una colección.Se puede utilizar el método para:
Descartar todos los índices excepto el de
_idde una colección.db.collection.dropIndexes() Descartar un índice específico de una colección. Para especificar el índice, se puede pasar el método de una de las siguientes maneras:
El documento de especificación del índice (a menos que el índice sea un índice de texto, en cuyo caso se debe utilizar el nombre del índice para descartarlo):
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, hay que usar el método
db.collection.getIndexes().
Descartar los índices especificados de una colección. Para especificar varios índices a descartar, pase al método un arreglo de nombres de índices:
db.collection.dropIndexes( [ "a_1_b_1", "a_1", "a_1__id_-1" ] ) Si el arreglo de nombres de índices incluye un índice inexistente, el método da error sin eliminar ninguno de los índices especificados.
Tip
Para obtener los nombres de los índices, hay que usar el método
db.collection.getIndexes().
Parámetros
El método acepta el siguiente parámetro db.collection.dropIndexes() opcional:
Parameter | Tipo | Descripción |
|---|---|---|
| string o documento o arreglo de cadenas | opcional. Especifica el índice o los índices que se van a descartar. Para descartar todos los índices excepto el índice _id de la colección, omite el parámetro. Para descartar un solo índice, especifique el nombre del índice, el documento de especificación índice (a menos que el índice sea un índice de texto), o un arreglo con el nombre del índice. Para descartar un índice de texto, especifica el nombre del índice o un arreglo con el nombre del índice en lugar del documento de especificación del índice. Para descartar múltiples índices, especifica un arreglo de los nombres de los índices. |
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 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.
Comportamiento
A partir de MongoDB,6.0 genera un error si se intenta utilizar para eliminar el último índice compatible con clave de fragmentación restante. Pasardb.collection.dropIndexes() "*" a elimina todos los índices excepto db.collection.dropIndexes() el _id índice y el último índice compatible con clave de fragmentación restante, si existe.
A partir de MongoDB,5.2 puede usar db.collection.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 BackgroundOperationInProgressForNamespace error.
Eliminar solo las query relacionadas
La operación solo elimina las consultas que utilizan el índice que se está eliminando. Esto puede incluir consultas que consideran el índice como parte de la dropIndexes() planificaciónde la consulta.
Bloqueo de recursos
db.collection.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 libere el db.collection.dropIndexes() 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 aún se db.collection.dropIndexes() db.collection.dropIndexes() está creando, 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 db.collection.dropIndexes() en el nodo principal. El nodo principal detiene la compilación del índice ycrea una entrada de oplog "abortIndexBuild" asociada. Los nodos secundarios que replican la entrada de oplog "abortIndexBuild" detienen la compilación del índice en curso y descartan el trabajo 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.