Definición
db.collection.dropIndex(index)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:Descarta o remueve el índice especificado de una colección.
Nota
No se puede descartar el índice por defecto en el campo
_id.No se puede especificar
db.collection.dropIndex("*")para descartar todos los índices que no sean de_id. Usardb.collection.dropIndexes()en su lugar.
Para obtener el nombre del índice o el documento de especificación del índice del método
db.collection.dropIndex(), usa el métododb.collection.getIndexes().
Parámetros
El método db.collection.dropIndex() toma los siguientes parámetros:
Parameter | Tipo | Descripción |
|---|---|---|
| string o documento | Requerido. Especifica el índice a descartar. Se puede especificar el índice ya sea por el nombre del índice o por el documento de especificación del índice. Para descartar un índice de texto, se debe especificar el nombre del índice. No se puede especificar Si un índice especificado en |
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.
Comportamiento
A partir de MongoDB 5.2, puedes utilizar db.collection.dropIndex() 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.
Bloqueo de recursos
db.collection.dropIndex() 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.dropIndex() libere el bloqueo.
Detener la creación de índices en curso
Si un índice especificado a db.collection.dropIndex() todavía se está compilando, db.collection.dropIndex() 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.dropIndex() 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.
Ejemplo
En una colección pets, crea un índice descendente en el campo cat:
db.pets.createIndex( { cat: -1 }, { name: "catIdx" } )
Para ver los índices de la colección pets, ejecuta el método getIndexes():
db.pets.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { cat: -1 }, name: 'catIdx' } ]
El único índice de campo en el campo cat tiene el nombre especificado por el usuario como catIdx y el documento de especificación del índice como { "cat" : -1 }.
Para descartar el índice catIdx, se puede usar el nombre del índice:
db.pets.dropIndex( "catIdx" )
O se puede usar el documento de especificaciones del índice { "cat" : -1 }:
db.pets.dropIndex( { "cat" : -1 } )
El comando dropIndex devuelve el número de índices en la colección antes de que se ejecute el comando e indica si el comando fue exitoso:
{ nIndexesWas: 2, ok: 1 }
Para confirmar que se descartó el índice, ejecuta el método getIndexes() de nuevo:
db.pets.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' } ]