2010-05-07 5 views

Antwort

137

Von der Schale:

db.test.getIndexes() 

Für Shell-Hilfe sollten Sie versuchen:

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

Und wenn Sie die Liste aller Indizes in Ihrer Datenbank erhalten möchten:

use "yourdbname" 

db.system.indexes.find() 
5

Sie können alle Indizes zusammen mit ihrer Größe auch Ausgabe:

db.collectionName.stats().indexSizes 

Überprüfen Sie auch, dass db.collectionName.stats() gibt Ihnen eine Menge von interessanten Informationen wie paddingFactor, Größe der Sammlung und Anzahl der Elemente darin.

4

Wenn Sie alle Indizes auflisten möchten:

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

Gehen wir noch einen Schritt weiter, wenn Sie alle Indizes für alle Sammlungen finden möchten, dieses Skript (modifiziert von Juan Carlos Farah Drehbuch here) gibt Sie einige nützliche Ausgang ein JSON Ausdruck der Index Details einschließlich:

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

Das ist wirklich hilfreich, aber ich denke, dass 'printjson (indexes);' 'printjson (id x); ' –

Verwandte Themen