Si tiene un índice oculto en MongoDB, puede usar unhideIndex()
método o el collMod
comando de administración para mostrarlo.
Índices de ejemplo
Echemos un vistazo a los índices de una colección llamada pets
:
db.pets.getIndexes()
Resultado:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "idx_weight_-1", "hidden" : true }, { "v" : 2, "hidden" : true, "key" : { "type" : 1 }, "name" : "type_1" } ]
Podemos ver que hay tres índices, y los dos últimos están ocultos. Lo sabemos porque tienen "hidden" : true
en su definición.
Mostrar usando unhideIndexes()
Método
La primera forma de mostrar un índice es usar db.collection.unhideIndex()
método. Este método acepta el nombre del índice o su patrón clave como parámetro para especificar qué índice mostrar.
Ejemplo:
db.pets.unhideIndex("idx_weight_-1")
Salida:
{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }
La salida de unhideIndex()
El método muestra el valor antiguo de hidden
campo (en este caso true
) y el nuevo valor (en este caso false
).
Sin embargo, si mostramos un índice que ya no está oculto (u ocultamos uno que ya está oculto), estos no se muestran y solo obtenemos lo siguiente:
{ "ok" : 1 }
En cualquier caso, el índice ahora no está oculto.
El unhideIndex()
El método es un contenedor para collMod
comando de administración (abajo).
El collMod
Comando
El collMod
El comando de administración nos permite agregar opciones a una colección o modificar las definiciones de vista.
Podemos usarlo para mostrar un índice pasando hidden: false
:
Ejemplo:
db.runCommand( {
collMod: "pets",
index: {
name: "type_1",
hidden: false
}
} )
Resultado:
{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }
Esto devuelve el mismo documento que unhideIndex()
regresa.
Similar a unhideIndex()
, tiene la opción de especificar el nombre del índice o su patrón clave.
Aquí hay un ejemplo del uso del patrón clave:
db.runCommand( {
collMod: "pets",
index: {
keyPattern: { "type" : 1 },
hidden: false
}
} )
En este caso, el índice se definió usando { "type" : 1 }
, por lo que esta definición se puede utilizar en lugar del nombre del índice.
Verificar los cambios
Para verificar nuestros cambios, podemos llamar a getIndexes()
de nuevo para ver la definición del índice:
db.pets.getIndexes()
Resultado:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "idx_weight_-1" }, { "v" : 2, "key" : { "type" : 1 }, "name" : "type_1" } ]
Como era de esperar, ambos índices se han desocultado. También podemos ocultarlos nuevamente pasando hidden: true
.
¿No puede ocultar/mostrar índices? Compruebe esta configuración.
El mongod
featureCompatibilityVersion
debe ser al menos 4.4
antes de poder ocultar índices. Sin embargo, una vez oculto, un índice permanecerá oculto incluso con featureCompatibilityVersion
establecido en 4.2 en binarios MongoDB 4.4.
Puede consultar la featureCompatibilityVersion
configuración con el siguiente código:
db.adminCommand(
{
getParameter: 1,
featureCompatibilityVersion: 1
}
)
Puede configurarlo usando setFeatureCompatibilityVersion
comando:
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
setFeatureCompatibilityVersion
el comando debe ejecutarse en el admin
base de datos.
También tenga en cuenta que no puede ocultar el _id
índice.