A list of indices in MongoDB?

MongodbIndexingDatabase IndexesMongodb IndexesDatabase

Mongodb Problem Overview


Is there a way to see a list of indices on a collection in mongodb in shell? i read through http://www.mongodb.org/display/DOCS/Indexes but i dont see anything

Mongodb Solutions


Solution 1 - Mongodb

From the shell:

db.test.getIndexes()

For shell help you should try:

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

Solution 2 - Mongodb

If you want to list all indexes across collections:

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

Solution 3 - Mongodb

And if you want to get list of all indexes in your database:

use "yourdbname"

db.system.indexes.find()

Solution 4 - Mongodb

Make sure you use your collection:

db.collection.getIndexes()

http://docs.mongodb.org/manual/administration/indexes/#information-about-indexes

Solution 5 - Mongodb

You can also output all your indexes together with their size:

db.collectionName.stats().indexSizes

Also check that db.collectionName.stats() gives you a lot of interesting information like paddingFactor, size of the collection and number of elements inside of it.

Solution 6 - Mongodb

Taking this one step further, if you'd like to find all indexes on all collections, this script (modified from Juan Carlos Farah's script here) gives you some useful output, including a JSON printout of the index details:

 // 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);
	     });
   
    
    });

});

Solution 7 - Mongodb

Using an old version of MongoDB here but one of the top answers in this question here did not work for me. This one worked:

db.getCollectionNames().forEach(function(collection) {
    print("Collection: '" + collection);
    print(db.getCollection(collection).getIndexes())
});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTimmyView Question on Stackoverflow
Solution 1 - MongodbmdirolfView Answer on Stackoverflow
Solution 2 - MongodbSomnath MulukView Answer on Stackoverflow
Solution 3 - MongodbMarian ZagoruikoView Answer on Stackoverflow
Solution 4 - MongodbKamilski81View Answer on Stackoverflow
Solution 5 - MongodbSalvador DaliView Answer on Stackoverflow
Solution 6 - MongodbDCaugsView Answer on Stackoverflow
Solution 7 - MongodbJulesezaarView Answer on Stackoverflow