Có cách nào để xem danh sách các chỉ số trên một bộ sưu tập trong mongodb trong shell không? tôi đã đọc qua http://www.mongodb.org/display/DOCS/Indexes nhưng tôi không thấy gì cả
Có cách nào để xem danh sách các chỉ số trên một bộ sưu tập trong mongodb trong shell không? tôi đã đọc qua http://www.mongodb.org/display/DOCS/Indexes nhưng tôi không thấy gì cả
Câu trả lời:
Nếu bạn muốn liệt kê tất cả các chỉ mục:
db.getCollectionNames().forEach(function(collection) {
indexes = db.getCollection(collection).getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Và nếu bạn muốn nhận danh sách tất cả các chỉ mục trong cơ sở dữ liệu của mình:
use "yourdbname"
db.system.indexes.find()
Đảm bảo bạn sử dụng bộ sưu tập của mình:
db.collection.getIndexes()
http://docs.mongodb.org/manual/administration/indexes/#information-about-indexes
Bạn cũng có thể xuất tất cả các chỉ mục của mình cùng với kích thước của chúng:
db.collectionName.stats().indexSizes
Ngoài ra, hãy kiểm tra để db.collectionName.stats()
cung cấp cho bạn nhiều thông tin thú vị như paddingFactor, kích thước của bộ sưu tập và số lượng phần tử bên trong nó.
Tiến thêm một bước này, nếu bạn muốn tìm tất cả các chỉ mục trên tất cả các bộ sưu tập, tập lệnh này (được sửa đổi từ tập lệnh của Juan Carlos Farah tại đây ) cung cấp cho bạn một số đầu ra hữu ích, bao gồm bản in JSON của chi tiết chỉ mục:
// 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);
});
});
});
printjson(indexes);
nênprintjson(idx);