programing

MongoDB의 인덱스 목록?

goodsources 2023. 3. 17. 21:26
반응형

MongoDB의 인덱스 목록?

셸에서 mongodb 컬렉션의 인덱스 목록을 볼 수 있는 방법이 있나요? http://www.mongodb.org/display/DOCS/Indexes에서 읽었는데 아무것도 보이지 않습니다.

셸에서:

db.test.getIndexes()

셸 도움말의 경우 다음을 시도해 보십시오.

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

컬렉션 전체의 모든 인덱스를 나열하는 경우:

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

또한 데이터베이스에 있는 모든 인덱스 목록을 가져오려면 다음을 수행하십시오.

use "yourdbname"

db.system.indexes.find()

컬렉션을 사용하는 것을 확인합니다.

db.collection.getIndexes()

http://docs.mongodb.org/manual/administration/indexes/ #관련 정보

모든 인덱스와 인덱스의 크기를 함께 출력할 수도 있습니다.

db.collectionName.stats().indexSizes

또, 체크해 주세요.db.collectionName.stats()에는 padding Factor, 컬렉션 크기 및 그 안에 있는 요소의 수 등 많은 흥미로운 정보가 있습니다.

한 걸음 더 나아가 모든 컬렉션에 대한 모든 인덱스를 찾으려면 이 스크립트(여기 Juan Carlos Farah의 스크립트에서 수정됨)를 통해 인덱스 세부 정보의 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);
         });


    });

});

여기에서는 오래된 버전의 MongoDB를 사용하지만, 질문의 상위 답변하나를 사용해도 효과가 없습니다.이 방법은 성공했습니다.

db.getCollectionNames().forEach(function(collection) {
    print("Collection: '" + collection);
    print(db.getCollection(collection).getIndexes())
});

언급URL : https://stackoverflow.com/questions/2789865/a-list-of-indices-in-mongodb

반응형