2010-05-07 16 views

Respuesta

137

Desde el shell:

db.test.getIndexes() 

Para ayuda de la consola debería probar:

help; 
db.help(); 
db.test.help(); 
13

Y si desea obtener la lista de todos los índices en la base de datos:

use "yourdbname" 

db.system.indexes.find() 
5

También puede exportar todos sus índices, junto con su tamaño:

db.collectionName.stats().indexSizes 

también comprobar que db.collectionName.stats() le da mucha de información interesante como paddingFactor, tamaño de la colección y cantidad de elementos dentro de ella.

4

Si desea listar todos los índices:

db.getCollectionNames().forEach(function(collection) { 
    indexes = db[collection].getIndexes(); 
    print("Indexes for " + collection + ":"); 
    printjson(indexes); 
}); 
2

Tomando un paso más allá, si desea encontrar todos los índices de todas las colecciones, este script (modificado a partir de la escritura de Juan Carlos Farah here) da que parte de la producción útil, incluyendo una copia impresa de los datos JSON índice:

// Switch to admin database and get list of databases. 
db = db.getSiblingDB("admin"); 
dbs = db.runCommand({ "listDatabases": 1}).databases; 


// Iterate through each database and get its collections. 
dbs.forEach(function(database) { 
db = db.getSiblingDB(database.name); 
cols = db.getCollectionNames(); 

// Iterate through each collection. 
cols.forEach(function(col) { 

    //Find all indexes for each collection 
    indexes = db[col].getIndexes(); 

    indexes.forEach(function(idx) { 
     print("Database:" + database.name + " | Collection:" +col+ " | Index:" + idx.name); 
     printjson(indexes); 
     }); 


    }); 

}); 
+0

Esto es realmente útil, pero creo que 'printjson (indexes);' debe ser 'printjson (id x); ' –

Cuestiones relacionadas