Вопрос

Есть ли способ увидеть список индексов на коллекции в MongoDB в Shell? Я прочитал http://www.mongodb.org/display/docs/indexes. Но я ничего не вижу

Это было полезно?

Решение

Из оболочки:

db.test.getIndexes()

Для Shell поможет вам попробовать:

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

Другие советы

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

use "yourdbname"

db.system.indexes.find()

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

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

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

db.collection.getIndexes()

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

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

db.collectionName.stats().indexSizes

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

Принимая этот шаг дальше, если вы хотите найти все индексы на всех коллекциях, этот скрипт (измененный из скрипта Хуана Карлоса Фара. здесь) дает вам полезный вывод, включая распечатывать 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);
         });


    });

});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top