2010-05-07 6 views

risposta

137

Dalla shell:

db.test.getIndexes() 

per le coperture di aiuto si dovrebbe provare:

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

E se si vuole ottenere l'elenco di tutti gli indici nel database:

use "yourdbname" 

db.system.indexes.find() 
5

È inoltre possibile uscita tutti gli indici insieme con le loro dimensioni:

db.collectionName.stats().indexSizes 

Verificate anche che db.collectionName.stats() ti dà un sacco di informazioni interessanti come paddingFactor, dimensioni della collezione e numero di elementi al suo interno.

4

Se si desidera elencare tutti gli indici:

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

Tenendo presente un ulteriore passo avanti, se si desidera trovare tutti gli indici su tutte le collezioni, questo script (modificato da copione here di Juan Carlos Farah) dà un output utile, inclusa una stampa JSON dei dettagli dell'indice:

// 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

Questo è veramente utile, ma penso che 'printjson (indexes);' dovrebbe essere 'printjson (id x); ' –