2010-05-07 101 views

回答

137

從貝:

db.test.getIndexes() 

對於外殼的幫助,你應該嘗試:

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

如果你想在你的數據庫中所有索引的列表:

use "yourdbname" 

db.system.indexes.find() 
5

您也可以輸出所有與他們的大小指數一起:

db.collectionName.stats().indexSizes 

此外,檢查db.collectionName.stats()給你很多像paddingFactor這樣有趣的信息,集合的大小和其內部元素的數量。

4

如果要列出所有索引:

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

考慮這一步,如果你想找到的所有集合的所有索引,這個腳本(由胡安·卡洛斯·法拉的劇本here修改)給出你的一些有用的輸出,包括索引細節的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); 
     }); 


    }); 

}); 
+0

這真的很有幫助,但我認爲'printjson(indexes);'應該是'printjson(id x)的;' – 2018-03-09 22:56:40