Docs Menu
Docs Home
/ /
컬렉션

db.collection.dropIndex()

db.collection.dropIndex(index)

드라이버가 포함된 MongoDB

이 페이지에서는 mongosh 메서드에 대해 설명합니다. MongoDB 드라이버에서 동일한 메서드를 보려면 해당 프로그래밍 언어의 해당 페이지를 참조하세요.

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala

지정된 인덱스를 컬렉션에서 제거합니다.

참고

  • _id 필드에서 기본 인덱스를 제거할 수 없습니다.

  • _id가 아닌 모든 인덱스를 삭제하기 위해 db.collection.dropIndex("*")를 지정할 수 없습니다. 대신 db.collection.dropIndexes()를 사용하세요.

db.collection.dropIndex() 메서드에 해당하는 인덱스 이름 또는 인덱스 사양 문서를 가져오려면 db.collection.getIndexes() 메서드를 사용하세요.

db.collection.dropIndex() 메서드는 다음 매개 변수를 사용합니다.

Parameter
유형
설명

index

문자열 또는 문서

선택 사항입니다. 삭제할 인덱스를 지정합니다. 인덱스 이름 또는 인덱스 사양 문서로 인덱스를 지정할 수 있습니다.

텍스트 인덱스를 제거하려면 인덱스 이름을 지정하세요.

_id가 아닌 모든 인덱스를 삭제하기 위해 "*"를 지정할 수는 없습니다. 대신 db.collection.dropIndexes()를 사용하세요.

에 지정된 인덱스 여전히 db.collection.dropIndex() db.collection.dropIndex() 빌드 중이면 는 진행 중인 빌드 중지하려고 시도합니다. 인덱스 빌드 중지하면 빌드된 인덱스 삭제하는 것과 동일한 효과가 있습니다. 자세한 내용은 진행 중인 인덱스 빌드 중단을 참조하세요.

이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하십시오.

dropIndex() 작업은 제거되는 인덱스를 사용하는 쿼리만 종료합니다. 여기에는 쿼리 계획의 일부로 인덱스를 고려하는 쿼리가 포함될 수 있습니다.

db.collection.dropIndex()은 작업 기간 동안 지정된 컬렉션에 대한 배타 락을 얻습니다. 컬렉션에 대한 모든 후속 작업은 db.collection.dropIndex()이 잠금을 해제할 때까지 기다려야 합니다.

버전 4.4에 새로 추가됨: db.collection.dropIndex() 에 지정된 인덱스가 아직 빌드 중인 경우, dropIndex() 는 빌드를 중단하려고 시도합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 삭제하는 것과 동일한 효과가 있습니다. MongoDB 4.4 이전에는 지정된 인덱스가 아직 빌드 중인 경우 dropIndex() 가 오류를 반환했습니다.

dropIndex() 에 지정된 인덱스는 인덱스 빌더와 연결된 유일한 인덱스, 즉 단일 createIndexes 또는 db.collection.createIndexes() 작업으로 작성된 인덱스여야 합니다. 연결된 인덱스 빌더에 다른 진행 중인 빌드가 있는 경우 빌드가 완료될 때까지 기다렸다가 인덱스를 dropIndex() 로 지정합니다.

예를 들어 createIndexes / createIndexes() 작업은 세 개의 인덱스를 생성합니다. 세 가지 인덱스 빌드가 모두 아직 진행 중이라고 가정하면 dropIndex() 는 어떤 인덱스 빌드도 성공적으로 중단할 수 없으므로 해당 인덱스를 삭제할 수 없습니다.

currentOp 를 사용하여 createIndexes / createIndexes() 작업과 관련된 인덱스 빌드를 식별합니다. 예시는 활성 인덱싱 작업 을 참조하세요.

복제본 세트 또는 샤드 복제본 세트의 경우, 프라이머리 에서 인덱스 를 중단해도 보조 인덱스 빌드가 동시에 중단되지는 않습니다. dropIndex()프라이머리 인덱스에서 지정된 인덱스에 대해 진행 중인 빌드를 중단하려고 시도하고, 성공적인 하면 관련 '중단' oplog 항목을 생성합니다. 복제된 진행 중인 빌드가 있는 세컨더리 멤버는 인덱스 빌드 를 커밋하거나 중단하기 전에 프라이머리 에서 oplog 항목을 커밋 하거나 중단할 때까지 기다립니다.

MongoDB는 쿼리 플래너에서 인덱스를 숨기거나 숨김 해제하는 기능을 제공합니다. 플래너에서 인덱스를 숨기면 실제로 인덱스를 제거하지 않고도 인덱스 제거의 잠재적 영향을 평가할 수 있습니다.

평가 후 사용자가 인덱스를 제거하기로 결정하면 숨겨진 인덱스를 제거할 수 있습니다. 즉, 인덱스를 제거하기 위해 먼저 숨기기를 해제할 필요가 없습니다.

하지만 영향이 부정적이라면 사용자는 제거된 인덱스를 다시 만들지 않고도 인덱스 숨김을 해제할 수 있습니다. 또한 인덱스는 숨겨진 상태에서도 완전히 유지되므로 숨김을 해제하면 인덱스를 즉시 사용할 수 있습니다.

숨겨진 인덱스에 대한 자세한 내용은 숨겨진 인덱스를 참조하세요.

pets 컬렉션을 살펴보겠습니다. pets 컬렉션에서 getIndexes() 메서드를 호출하면 다음과 같은 인덱스가 반환됩니다.

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"cat" : -1
},
"name" : "catIdx"
},
{
"v" : 2,
"key" : {
"cat" : 1,
"dog" : -1
},
"name" : "cat_1_dog_-1"
}
]

필드 cat의 단일 필드 인덱스는 catIdx라는 사용자 지정 이름을 가지며[1] { "cat" : -1 }라는 인덱스 사양 문서가 있습니다.

인덱스 catIdx를 제거하려면 인덱스 이름을 사용할 수 있습니다:

db.pets.dropIndex( "catIdx" )

또는 인덱스 사양 문서 { "cat" : -1 }을 사용할 수 있습니다.

db.pets.dropIndex( { "cat" : -1 } )
[1] 인덱스 생성 중에 사용자가 인덱스 이름을 지정하지 않으면 시스템에서 인덱스 키 필드와 값을 밑줄로 연결하여 이름을 생성합니다(예: cat_1).

돌아가기

db.collection.drop

이 페이지의 내용