Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 컬렉션 인덱스 조회하기 – getIndexes() 메서드 완벽 가이드

MongoDB에서 특정 컬렉션에 생성된 인덱스를 확인하려면 getIndexes() 메서드를 사용하면 됩니다. 이 메서드는 해당 컬렉션에 존재하는 모든 인덱스의 정보를 배열 형태로 반환해 줍니다.

getIndexes() 기본 문법

db.yourCollectionName.getIndexes();

예제: 컬렉션 생성 및 데이터 삽입

개념을 이해하기 위해 먼저 컬렉션을 만들고 문서를 삽입해 보겠습니다. 아래 쿼리는 indexDemo 컬렉션에 학생 정보를 저장하는 예제입니다.

> db.indexDemo.insertOne({"StudentName":"Larry","StudentAge":21});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8f7c4f2f684a30fbdfd599")
}
> db.indexDemo.insertOne({"StudentName":"Mike","StudentAge":24});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8f7c552f684a30fbdfd59a")
}

이어서 세 번째 문서도 추가합니다.

> db.indexDemo.insertOne({"StudentName":"Carol","StudentAge":20});

실행 결과는 다음과 같습니다.

{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8f7c5e2f684a30fbdfd59b")
}

저장된 문서 확인하기

find() 메서드에 pretty()를 함께 사용하면 컬렉션의 모든 문서를 보기 좋게 출력할 수 있습니다.

> db.indexDemo.find().pretty();
{
    "_id" : ObjectId("5c8f7c4f2f684a30fbdfd599"),
    "StudentName" : "Larry",
    "StudentAge" : 21
}
{
    "_id" : ObjectId("5c8f7c552f684a30fbdfd59a"),
    "StudentName" : "Mike",
    "StudentAge" : 24
}
{
    "_id" : ObjectId("5c8f7c5e2f684a30fbdfd59b"),
    "StudentName" : "Carol",
    "StudentAge" : 20
}

인덱스 생성하기

이제 createIndex() 메서드로 복합 인덱스(Compound Index)를 생성해 보겠습니다. 여기서는 StudentNameStudentAge 필드에 내림차순(-1) 인덱스를 만듭니다.

> db.indexDemo.createIndex({"StudentName":-1,"StudentAge":-1});

실행 결과:

{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 2,
    "numIndexesAfter" : 3,
    "ok" : 1
}

출력 결과를 보면 인덱스가 2개에서 3개로 증가한 것을 확인할 수 있습니다. MongoDB는 기본적으로 _id 필드에 자동으로 인덱스를 생성하기 때문입니다.

getIndexes()로 인덱스 목록 조회하기

이번에는 indexDemo 컬렉션의 인덱스 목록을 조회하는 쿼리입니다.

> db.indexDemo.getIndexes();

다음은 실행 결과입니다.

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.indexDemo"
    },
    {
        "v" : 2,
        "key" : {
            "StudentName" : -1
        },
        "name" : "StudentName_-1",
        "ns" : "test.indexDemo"
    },
    {
        "v" : 2,
        "key" : {
            "StudentName" : -1,
            "StudentAge" : -1
        },
        "name" : "StudentName_-1_StudentAge_-1",
        "ns" : "test.indexDemo"
    }
]

결과 해석

  • v: 인덱스 버전을 나타냅니다.
  • key: 인덱스가 적용된 필드와 정렬 순서(1은 오름차순, -1은 내림차순)를 의미합니다.
  • name: 인덱스의 고유 이름입니다.
  • ns: 인덱스가 속한 네임스페이스(데이터베이스.컬렉션)를 나타냅니다.

이처럼 getIndexes() 메서드를 활용하면 컬렉션에 설정된 모든 인덱스를 한눈에 파악할 수 있어, 쿼리 성능 최적화나 인덱스 관리 작업에 매우 유용합니다.