기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
인덱스 속성: 숨김
Amazon DocumentDB는 Amazon DocumentDB 8.0.1부터 hidden 인덱스 속성을 지원합니다.
숨겨진 인덱스는 쿼리 플래너에 표시되지 않으며 쿼리를 지원하는 데 사용할 수 없습니다. 플래너에서 인덱스를 숨기면 인덱스를 실제로 삭제하지 않고도 인덱스 삭제의 잠재적 영향을 평가할 수 있습니다. 영향이 음수인 경우 삭제된 인덱스를 다시 생성하는 대신 인덱스를 숨길 수 있습니다.
hidden 속성은 단일 필드, 복합, 멀티키, 텍스트, 지리 공간 및 벡터 인덱스를 포함한 모든 인덱스 유형에서 지원됩니다.
동작
플래너에서 숨기는 것 외에도 숨겨진 인덱스는 완전히 유지 관리되고 적용됩니다. 예제:
숨겨진 인덱스가 고유한 인덱스인 경우 인덱스는 여전히 고유한 제약 조건을 문서에 적용합니다.
숨겨진 인덱스가 TTL 인덱스인 경우 인덱스는 여전히 문서를 만료시킵니다.
숨겨진 인덱스는
listIndexes및db.collection.getIndexes()결과에 포함됩니다.숨겨진 인덱스는 컬렉션에 대한 쓰기 작업에서 업데이트되며 디스크 공간과 메모리를 계속 사용합니다. 따라서
db.collection.stats()및와 같은 통계 작업에 포함됩니다$indexStats.숨기지 않은 인덱스를 숨기거나 숨김 인덱스를 숨기지 않으면가를 재설정합니다
$indexStats. 이미 숨겨진 인덱스를 숨기거나 이미 숨기지 않은 인덱스를 숨기면가 재설정되지 않습니다$indexStats.
제한 사항
_id인덱스는 숨길 수 없습니다.cursor.hint()를 사용하여 숨겨진 인덱스를 강제로 사용할 수 없습니다.$mergeon필드에 필요한 고유 인덱스가 숨겨져 있으면가 실패합니다. 를 실행하기 전에 인덱스를 표시합니다$merge.
예제
숨겨진 인덱스 생성
숨겨진 상태에서 인덱스를 생성하려면 db.collection.createIndex() 메서드를 사용하고 인덱스 정의true에서 hidden 옵션을 로 설정합니다.
예를 들어 다음 작업은 productId 필드에 숨겨진 오름차순 인덱스를 생성합니다.
db.collection.createIndex( { "productId": 1 }, { "name": "productId_1", "hidden": true } )
확인하려면 컬렉션listIndexes에서 db.collection.getIndexes() 또는를 실행합니다. 숨겨진 인덱스는 정의"hidden": true에를 포함합니다.
db.collection.getIndexes() [ { "v": 4, "key": { "_id": 1 }, "name": "_id_" }, { "v": 4, "key": { "productId": 1 }, "name": "productId_1", "hidden": true } ]
인덱스 옵션은 값이 hidden인 경우에만 반환됩니다true.
기존 인덱스 숨기기
collMod 명령을 사용하여 기존 인덱스를 숨깁니다. name 또는 로 인덱스를 식별하고를 hidden로 keyPattern설정합니다true.
다음 예제에서는 인덱스를 이름으로 숨깁니다.
db.runCommand({ collMod: "collection", index: { name: "productId_1", // Specify the index name hidden: true } })
키 패턴으로 인덱스를 식별할 수도 있습니다.
db.runCommand({ collMod: "collection", index: { keyPattern: { productId: 1 }, // Specify the index key specification document hidden: true } })
기존 인덱스 숨기기 해제
숨겨진 인덱스를 다시 표시하려면가 로 hidden 설정된 collMod 명령을 사용합니다false.
db.runCommand({ collMod: "collection", index: { name: "productId_1", hidden: false } })
인덱스는 숨겨져 있는 동안 완전히 유지되므로 숨기지 않으면 즉시 사용할 수 있습니다.