Список индексов в MongoDB?

есть ли способ увидеть список индексов в коллекции в mongodb в оболочке? я прочитал http://www.mongodb.org/display/DOCS/Indexes но я ничего не вижу

6 ответов


из командной строки:

db.test.getIndexes()

для помощи оболочки вы должны попробовать:

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

и если вы хотите получить список всех индексов в базе данных:

use "yourdbname"

db.system.indexes.find()

убедитесь, что вы используете вашу коллекцию:

db.collection.getIndexes()

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


вы также можете вывести все свои индексы вместе с их размером:

db.collectionName.stats().indexSizes

также проверить, что db.collectionName.stats() дает вам много интересной информации, такой как paddingFactor, размер коллекции и количество элементов внутри нее.


Если вы хотите перечислить все индексы:

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

делая этот шаг дальше, если вы хотите найти все индексы во всех коллекциях, этот скрипт (измененный из сценария Хуана Карлоса Фараха здесь) дает вам некоторые полезные выходные данные, включая распечатку JSON деталей индекса:

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


    });

});