이번 장에서는 MongoDB 인덱스에 대해 소개합니다. MYSQL과 유사하게 MongoDB도 인덱스를 지원합니다. 다른 점은 MongoDB가 JSON 구조의 임의의 중첩 필드에 인덱스를 추가할 수 있으며, 이는 쿼리 효율성을 향상시키는 동일한 목적을 가지고 있습니다.

MongoDB 인덱스 유형

단일 필드 인덱스

MYSQL과 유사하게, 단일 필드에 대해 인덱스를 생성합니다.

형식:

db.collection.createIndex( { field_name: 정렬_방향(1 또는 -1) } )

참고: 정렬 방향 1은 오름차순을 나타내며, -1은 내림차순을 나타냅니다.

예 1:

db.records.createIndex( { score: 1 } )

score 필드에 대한 인덱스를 생성합니다.

예 2:

db.records.createIndex( { "location.state": 1 } )

중첩된 JSON 필드 location.state에 대한 인덱스를 생성합니다.

복합 인덱스

MYSQL과 유사하게, 여러 필드를 결합하여 인덱스를 생성할 수 있으며, 복합 쿼리의 속도를 높일 수 있습니다.

형식:

db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )

예:

db.products.createIndex( { "item": 1, "stock": 1 } )

item 및 stock 필드에 대한 오름차순 복합 인덱스를 생성합니다 (1은 오름차순을 나타냅니다).

텍스트 인덱스 (전체 텍스트 인덱스)

텍스트 인덱스 (text)는 주로 전체 텍스트 검색을 지원하는 데 사용됩니다.

참고: 컬렉션은 한 개의 텍스트 인덱스만 허용하며, 텍스트 인덱스에는 여러 필드를 포함할 수 있습니다.

예:

db.stores.createIndex( { name: "text", description: "text" } )

name 및 description 필드에 대한 전체 텍스트 인덱스를 생성합니다.

참고: 자세한 내용은 전체 텍스트 인덱스 섹션을 참조하십시오.

공간 인덱스 (GEO 인덱스)

지리 정보 관련 쿼리를 지원하기 위해 주로 사용되며, 주로 2dsphere 및 2d 두 유형의 인덱스를 지원합니다. 자세한 내용은 Geospatial Query 섹션을 참조하십시오.

인덱스 삭제

컬렉션의 모든 인덱스를 나열하려면:

db.pets.getIndexes()

pets 컬렉션에서 catIdx 인덱스를 삭제하려면:

db.pets.dropIndex( "catIdx" )