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


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

6 87

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


    });

});