dropIndexes
dropIndexes
버전 5.0에서 변경됨
dropIndexes
명령은 지정된 컬렉션에서 하나 이상의 인덱스(_id
필드의 인덱스와 마지막 남은 샤드 키 인덱스가 있는 경우 제외)를 삭제합니다.명령의 형식은 다음과 같습니다.
{ dropIndexes: <string>, index: <string|document|arrayofstrings>, writeConcern: <document>, comment: <any> } 이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 설명 |
---|---|---|
dropIndexes | 문자열 | 인덱스를 삭제할 컬렉션의 이름입니다. |
색인 | 문자열 또는 문자열의 문서 또는 배열 | |
쓰기 고려 | 문서 | |
comment | 어떤 | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다. |
행동
MongoDB 5.0부터는 dropIndexes
를 사용하여 마지막 남은 샤드 키 호환 인덱스를 제거하려고 하면 오류가 발생합니다. "*"
를 dropIndexes
에 전달하면 _id
인덱스와 마지막 남은 샤드 키 호환 인덱스(있는 경우)를 제외한 모든 인덱스가 제거됩니다.
관련 쿼리만 종료
dropIndexes
작업은 제거되는 인덱스를 사용하는 쿼리만 종료합니다. 여기에는 쿼리 계획의 일부로 인덱스를 고려하는 쿼리가 포함될 수 있습니다.
리소스 잠금
dropIndexes
은 작업 기간 동안 지정된 컬렉션에 대한 배타 락을 얻습니다. 컬렉션에 대한 모든 후속 작업은 dropIndexes
이 잠금을 해제할 때까지 기다려야 합니다.
인덱스 이름
존재하지 않는 인덱스가 포함된 인덱스 이름 배열이 메서드에 전달되면 메서드는 지정된 인덱스를 삭제하지 않고 오류를 발생시킵니다.
_id
인덱스
_id
필드에서 기본 인덱스를 삭제할 수 없습니다.
텍스트 인덱스
텍스트 인덱스를 삭제하려면 인덱스 사양 문서 대신 인덱스 이름을 지정합니다.
진행 중인 인덱스 빌드 중단
버전 4.4에 추가: dropIndexes
에 지정된 인덱스가 여전히 빌드 중이면, dropIndexes
는 진행 중인 빌드를 중단하려고 시도합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 삭제하는 것과 동일한 효과가 있습니다. MongoDB 4.4 이전에는 collection에 진행 중인 인덱스 빌드가 있는 경우 dropIndexes
에서 오류를 반환했습니다.
복제본 세트의 경우 프라이머리 에서 를 dropIndexes
실행합니다. 프라이머리는 인덱스 빌드를 중단하고 관련 "abortIndexBuild" oplog 항목을 생성합니다. "abortIndexBuild" oplog 항목을 복제하는 세컨더리는 진행 중인 인덱스 빌드를 중단하고 빌드 작업을 삭제합니다. 인덱스 빌드 프로세스와 진행 중인 인덱스 빌드를 종료하는 구체적인 시점에 대한 자세한 문서는 인덱스 빌드 프로세스 를 참조하세요.
dropIndexes
에 지정된 인덱스는 단일 createIndexes
또는 db.collection.createIndexes()
작업과 연결된 진행 중인 빌드의 전체 세트여야 합니다. 관련 진행 중인 빌드 세트에서 특정 인덱스를 삭제하려면 인덱스 빌드가 완료될 때까지 기다렸다가 해당 인덱스를 dropIndexes
로 지정합니다.
예를 들어 createIndexes
/ createIndexes()
작업은 세 개의 인덱스를 생성합니다. 세 개의 인덱스 빌드가 모두 진행 중이라고 가정할 때 dropIndexes
에서 세 개의 인덱스를 모두 지정해야 인덱스 빌드를 중단할 수 있습니다.
currentOp
를 사용하여 createIndexes
/ createIndexes()
작업과 관련된 인덱스 빌드를 식별합니다. 예시는 활성 인덱싱 작업 을 참조하세요.
숨겨진 인덱스
MongoDB는 쿼리 플래너에서 인덱스를 숨기거나 숨김 해제하는 기능을 제공합니다. 플래너에서 인덱스를 숨기면 실제로 인덱스를 제거하지 않고도 인덱스 제거의 잠재적 영향을 평가할 수 있습니다.
평가 후 사용자가 인덱스를 제거하기로 결정하면 숨겨진 인덱스를 제거할 수 있습니다. 즉, 인덱스를 제거하기 위해 먼저 숨기기를 해제할 필요가 없습니다.
하지만 영향이 부정적이라면 사용자는 삭제된 인덱스를 다시 만들지 않고도 인덱스 숨김을 해제할 수 있습니다. 또한 인덱스는 숨겨진 상태에서도 완전히 유지되므로 숨김을 해제하면 인덱스를 즉시 사용할 수 있습니다.
숨겨진 인덱스에 대한 자세한 내용은 숨겨진 인덱스를 참조하세요.
예제
_id
이 아닌 모든 인덱스를 삭제하려면index
에"*"
를 지정합니다.db.runCommand( { dropIndexes: "collection", index: "*" } ) 단일 인덱스를 삭제하려면 삭제하려는 인덱스의 이름을 지정하여 명령을 실행합니다. 예를 들어,
age_1
이라는 인덱스을 삭제하려면 다음 명령을 사용합니다.db.runCommand( { dropIndexes: "collection", index: "age_1" }) mongosh
은(는) 헬퍼 메서드db.collection.dropIndex()
및db.collection.dropIndexes()
를 제공합니다.db.collection.dropIndex("age_1"); 여러 인덱스를 삭제하려면 인덱스 이름의 배열을 지정하여 명령을 실행합니다.
db.runCommand( { dropIndexes: "collection", index: [ "age_1", "age_1_status_1" ] } )