2010-05-07 14 views

Répondre

137

À partir du shell:

db.test.getIndexes() 

vous devriez essayer d'aide du shell:

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

Et si vous voulez obtenir la liste de tous les index dans la base de données:

use "yourdbname" 

db.system.indexes.find() 
5

Vous pouvez également sortie tous vos index ainsi que leur taille:

db.collectionName.stats().indexSizes 

Vérifiez aussi que db.collectionName.stats() vous donne beaucoup d'informations intéressantes comme paddingFactor, la taille de la collection et le nombre d'éléments à l'intérieur.

4

Si vous souhaitez lister tous les index:

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

En allant un peu plus loin, si vous souhaitez trouver tous les index sur toutes les collections, ce script (modifié à partir du script de Juan Carlos Farah here) donne vous une sortie utile, y compris une impression JSON des détails de l'index:

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

Ceci est vraiment utile, mais je pense que 'printjson (indexes);' devrait être 'printjson (id x); ' –