C'è un modo per vedere un elenco di indici su una raccolta in mongodb nella shell? ho letto http://www.mongodb.org/display/DOCS/Indexes ma non vedo nulla
C'è un modo per vedere un elenco di indici su una raccolta in mongodb nella shell? ho letto http://www.mongodb.org/display/DOCS/Indexes ma non vedo nulla
Risposte:
Se vuoi elencare tutti gli indici:
db.getCollectionNames().forEach(function(collection) {
indexes = db.getCollection(collection).getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
E se vuoi ottenere l'elenco di tutti gli indici nel tuo database:
use "yourdbname"
db.system.indexes.find()
Assicurati di utilizzare la tua raccolta:
db.collection.getIndexes()
http://docs.mongodb.org/manual/administration/indexes/#information-about-indexes
Puoi anche generare tutti i tuoi indici insieme alla loro dimensione:
db.collectionName.stats().indexSizes
Controlla anche che db.collectionName.stats()
ti dia molte informazioni interessanti come paddingFactor, la dimensione della raccolta e il numero di elementi al suo interno.
Facendo un ulteriore passo avanti, se desideri trovare tutti gli indici su tutte le raccolte, questo script (modificato dallo script di Juan Carlos Farah qui ) ti offre alcuni risultati utili, 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);
});
});
});
printjson(indexes);
dovrebbe essereprintjson(idx);