db.dropDatabase()
정의
호환성
다음 환경에서 호스팅되는 배포에 db.dropDatabase()
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
db.dropDatabase()
메서드는 선택적 매개 변수를 사용합니다.
필드 | 설명 | |
---|---|---|
쓰기 고려 | 선택 사항.
복제본 세트에서 실행될 때 지정된 쓰기 고려 (write concern)로 인해 쓰기 고려 (write concern) 샤딩된 클러스터에서 실행되면 MongoDB는 지정된 쓰기 고려를 동작도 참조하세요. |
행동
db.dropDatabase()
메서드는 dropDatabase
명령을 래핑합니다.
잠금
작업에는 배타적 (X) 데이터베이스 잠금만 사용됩니다.
사용자 관리
이 명령은 현재 데이터베이스와 연결된 사용자를 삭제하지 않습니다. 연결된 사용자를 제거하려면 삭제하려는 데이터베이스에서 dropAllUsersFromDatabase
명령을 실행합니다.
Indexes
db.dropDatabase()
메서드와 dropDatabase
명령은 데이터베이스를 제거하기 전에 대상 데이터베이스의 컬렉션에서 진행 중인 인덱스 빌드를 중단합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 제거하는 것과 동일한 효과가 있습니다.
복제본 세트 또는 샤드 복제본 세트의 경우 기본 인덱스에서 인덱스를 중단해도 보조 인덱스 빌드가 동시에 중단되지는 않습니다. MongoDB가 프라이머리 인덱스에서 지정된 인덱스에 대해 진행 중인 빌드를 중단하려고 시도하고 성공하면 연결된 abort
oplog 항목을 생성합니다. 복제된 진행 중인 빌드가 있는 세컨더리 멤버는 인덱스 빌드를 커밋하거나 중단하기 전에 프라이머리에서 oplog 항목을 커밋하거나 중단할 때까지 기다립니다.
복제본 세트 및 샤딩된 클러스터
- 복제본 세트
최소한
db.dropDatabase()
는 데이터베이스의 모든 컬렉션 제거가 대부분의 복제본 세트 노드에 전파될 때까지 기다립니다(즉, 쓰기 고려"majority"
를 사용합니다).메서드에 쓰기 고려 (write concern)를 지정할 수 있습니다. 과반수보다 적은 수의 승인이 필요한 쓰기 고려 (write concern)를 지정하는 경우 메서드는 쓰기 고려 (write concern)
"majority"
를 사용합니다.과반수 이상의 승인이 필요한 쓰기 고려 (write concern)를 지정하는 경우 메서드는 지정된 쓰기 고려 (write concern)를 사용합니다.
- 샤딩된 클러스터
샤딩된 클러스터에서 실행되면 MongoDB는 지정된 쓰기 고려를
"majority"
로 변환합니다.삭제된 데이터베이스와 동일한 이름으로 새 데이터베이스를 생성하려면
mongos
에서dropDatabase
명령을 실행해야 합니다.이렇게 하면 모든 클러스터 노드가 새 데이터베이스의 프라이머리 샤드 위치를 포함하는 메타데이터 캐시를 새로 고칠 수 있습니다. 그렇지 않으면 읽기 데이터를 놓칠 수 있으며 올바른 샤드에 데이터를 쓰지 못할 수도 있습니다. 복구하려면 수동으로 개입해야 합니다.
MongoDB 5.0부터는
mongos
에서 관리 데이터베이스 또는 config 데이터베이스를 제거하려고 할 경우dropDatabase
명령 및db.dropDatabase()
메서드가 오류를 반환합니다.경고
관리 데이터베이스 또는 config 데이터베이스를 제거하면 클러스터가 사용할 수 없는 상태가 될 수 있습니다.
변경 스트림
db.dropDatabase()
메서드 및 dropDatabase
명령은 제거하다 데이터베이스에서 열리거나, 제거하다 데이터베이스의 컬렉션에서 열린 모든 Change Streams에 대해 무효화를 생성합니다.
예시
mongosh
의 다음 예에서는 use
<database>
작업을 사용하여 현재 데이터베이스를 temp
데이터베이스로 전환한 다음 db.dropDatabase()
메서드를 사용하여 temp
데이터베이스를 제거합니다.
use temp db.dropDatabase()