Danh sách các chỉ số trong MongoDB?


Câu trả lời:


143

Từ vỏ:

db.test.getIndexes()

Để được trợ giúp về shell, bạn nên thử:

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

16

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

1
Điều này thực sự hữu ích.
Adrian Carr

13

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()


5

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ó.


3

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


    });

});

Điều này thực sự hữu ích, nhưng tôi nghĩ rằng printjson(indexes);nênprintjson(idx);
Curt Williams
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.