인덱스 이름 지정
인덱스를 만들 때 인덱스에 사용자 정의 이름을 지정할 수 있습니다. 인덱스에 이름을 지정하면 컬렉션의 여러 인덱스를 구별하는 데 도움이 됩니다. 예를 들어 인덱스에 고유한 이름이 지정되어 있으면 쿼리 계획의 Explain 결과에서 쿼리에 사용되는 인덱스를 보다 쉽게 식별할 수 있습니다.
인덱스 이름을 지정하려면 인덱스를 만들 때 name
옵션을 포함합니다.
db.<collection>.createIndex( { <field>: <value> }, { name: "<indexName>" } )
이 작업에 대하여
인덱스 이름을 지정하기 전에 다음 사항을 고려하십시오.
인덱스 이름은 고유해야 합니다. 기존 인덱스의 이름으로 인덱스를 만들면 오류가 반환됩니다.
기존 인덱스의 이름은 변경할 수 없습니다. 대신 인덱스를 제거하고 새 이름으로 다시 만들어야 합니다.
기본 인덱스 이름
인덱스 생성 중에 이름을 지정하지 않으면 시스템에서 각 인덱스 키 필드와 값을 밑줄로 연결하여 이름을 생성합니다. 예시:
Index | 기본 이름 |
---|---|
{ score : 1 } | score_1 |
{ content : "text", "description.tags": "text" } | content_text_description.tags_text |
{ category : 1, locale : "2dsphere"} | category_1_locale_2dsphere |
{ "fieldA" : 1, "fieldB" : "hashed", "fieldC" : -1 } | fieldA_1_fieldB_hashed_fieldC_-1 |
절차
blog
컬렉션에는 블로그 게시물 및 사용자 상호 작용에 대한 데이터가 포함되어 있습니다.
content
, users.comments
및 users.profiles
필드에 텍스트 인덱스를 만듭니다. 인덱스 name
을 InteractionsTextIndex
로 설정합니다:
db.blog.createIndex( { content: "text", "users.comments": "text", "users.profiles": "text" }, { name: "InteractionsTextIndex" } )
결과
인덱스를 생성한 후 db.collection.getIndexes()
메서드를 사용하여 인덱스 이름을 가져올 수 있습니다:
db.blog.getIndexes()
출력:
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { _fts: 'text', _ftsx: 1 }, name: 'InteractionsTextIndex', weights: { content: 1, 'users.comments': 1, 'users.profiles': 1 }, default_language: 'english', language_override: 'language', textIndexVersion: 3 } ]