Есть ли способ увидеть список индексов в коллекции в mongodb в оболочке? я читаю http://www.mongodb.org/display/DOCS/Indexes, но я ничего не вижу
Список индексов в MongoDB?
Ответ 1
Из оболочки:
db.test.getIndexes()
Для помощи с оболочкой вы должны попробовать:
help;
db.help();
db.test.help();
Ответ 2
И если вы хотите получить список всех индексов в своей базе данных:
use "yourdbname"
db.system.indexes.find()
Ответ 3
Убедитесь, что вы используете свою коллекцию:
db.collection.getIndexes()
http://docs.mongodb.org/manual/administration/indexes/#information-about-indexes
Ответ 4
Вы также можете выводить все свои индексы вместе с их размером:
db.collectionName.stats().indexSizes
Также проверьте, что db.collectionName.stats()
предоставляет вам массу интересной информации, такой как paddingFactor, размер коллекции и количество элементов внутри нее.
Ответ 5
Если вы хотите перечислить все индексы:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Ответ 6
Сделав этот шаг дальше, если вы хотите найти все индексы для всех коллекций, этот script (измененный от Juan Carlos Farah script здесь) дает вам полезный вывод, включая распечатку 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);
});
});
});