MongoDB에서 한 번에 여러 개의 인덱스를 생성하는 방법
MongoDB에서 한 번에 여러 개의 인덱스를 생성하려면 createIndexes() 메서드를 사용하고, 생성하고자 하는 인덱스 키들을 배열 형태로 전달하면 됩니다. 이 방식은 인덱스를 하나씩 개별적으로 생성하는 것보다 효율적이며, 컬렉션 스캔 작업도 한 번만 수행되므로 대용량 데이터를 다룰 때 특히 유용합니다.
여러 인덱스 동시 생성하기
다음은 한 번에 여러 인덱스를 생성하는 쿼리입니다.
>db.multipleIndexesDemo.createIndexes([{"First":1},{"Second":1},{"Third":1},{"Fourth":1},{"Fifth":1}]);위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 6,
"ok" : 1
}출력 결과의 각 필드는 다음과 같은 의미를 가집니다.
- createdCollectionAutomatically: 지정한 컬렉션이 존재하지 않아 자동으로 생성되었음을 나타냅니다.
- numIndexesBefore: 인덱스 생성 전의 인덱스 개수입니다. 기본 _id 인덱스 1개만 존재했음을 알 수 있습니다.
- numIndexesAfter: 인덱스 생성 후의 총 인덱스 개수로, 5개의 새 인덱스가 추가되어 총 6개가 되었습니다.
생성된 인덱스 확인하기
인덱스가 정상적으로 생성되었는지 확인하려면 getIndexes() 메서드를 사용하여 해당 컬렉션의 모든 인덱스를 조회할 수 있습니다.
> db.multipleIndexesDemo.getIndexes();
실행 결과는 다음과 같습니다.
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.multipleIndexesDemo"
},
{
"v" : 2,
"key" : {
"First" : 1
},
"name" : "First_1",
"ns" : "test.multipleIndexesDemo"
},
{
"v" : 2,
"key" : {
"Second" : 1
},
"name" : "Second_1",
"ns" : "test.multipleIndexesDemo"
},
{
"v" : 2,
"key" : {
"Third" : 1
},
"name" : "Third_1",
"ns" : "test.multipleIndexesDemo"
},
{
"v" : 2,
"key" : {
"Fourth" : 1
},
"name" : "Fourth_1",
"ns" : "test.multipleIndexesDemo"
},
{
"v" : 2,
"key" : {
"Fifth" : 1
},
"name" : "Fifth_1",
"ns" : "test.multipleIndexesDemo"
}
]결과 분석
조회 결과를 보면 기본 _id 인덱스 외에 First, Second, Third, Fourth, Fifth 필드에 대한 인덱스가 각각 생성된 것을 확인할 수 있습니다. 키 값에서 1은 오름차순 인덱스를, -1은 내림차순 인덱스를 의미합니다. 또한 각 인덱스는 MongoDB가 필드명과 정렬 방향을 조합하여 자동으로 이름을 부여합니다(예: First_1).
이처럼 createIndexes() 하나만으로 여러 인덱스를 손쉽게 일괄 생성할 수 있으며, 불필요한 반복 작업을 줄여 인덱스 관리 작업의 생산성을 크게 높일 수 있습니다.