문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

드롭 데이터베이스

이 페이지의 내용

  • 정의
  • 구문
  • 명령 필드
  • 행동
  • 예제
dropDatabase

dropDatabase 명령은 현재 데이터베이스를 삭제하고 관련 데이터 파일을 삭제합니다.

명령은 다음과 같은 구문을 가집니다:

db.runCommand(
{
dropDatabase: 1,
writeConcern: <document>,
comment: <any>
}
)

이 명령은 다음과 같은 선택적 필드를 사용합니다.

필드
설명
writeConcern

선택 사항. 보다 큰 경우 사용할 쓰기 고려 (write concern) 를 Express하는 문서입니다."majority"

{ w: <value>, j: <boolean>, wtimeout: <number> }

"majority"의 기본/최소 쓰기 고려를 사용하려면 생략합니다.

복제본 세트에서 실행될 때 지정된 쓰기 고려 (write concern)로 인해 쓰기 고려 (write concern) "majority" 보다 멤버 승인이 적으면 작업은 "majority" 를 사용합니다. 그렇지 않으면 지정된 쓰기 고려 (write concern)가 사용됩니다.

샤드 클러스터에서 실행되면 MongoDB는 지정된 쓰기 고려"majority"로 변환합니다.

동작을 참조하세요.

comment

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

mongosh 는 헬퍼 메서드 db.dropDatabase() 도 제공합니다.

버전 4.2.2부터 이 작업은 배타적 (X) 데이터베이스 잠금만 사용합니다.

버전 3.6-4.2.1에서는 데이터베이스에서 컬렉션을 삭제하는 동안 작업이 배타적 (X) 데이터베이스 잠금을 사용하지만, 현재 비어 있는 데이터베이스를 삭제할 때는 글로벌 잠금을 사용합니다.

이 명령은 현재 데이터베이스와 연결된 사용자를 삭제하지 않습니다. 연결된 사용자를 삭제하려면 삭제하려는 데이터베이스에서 dropAllUsersFromDatabase 명령을 실행합니다.

db.dropDatabase() 메서드 및 dropDatabase 명령은 데이터베이스를 삭제하기 전에 대상 데이터베이스의 컬렉션에서 진행 중인 모든 인덱스 빌드를 중단합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 삭제하는 것과 동일한 효과가 있습니다.

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

복제본 세트

최소한 dropDatabase 는 데이터베이스의 모든 컬렉션 삭제가 복제본 세트 구성원의 과반수에게 전파될 때까지 기다립니다(즉, 쓰기 고려 "majority" 사용).

과반수보다 적은 수의 승인이 필요한 쓰기 고려를 지정하는 경우 이 명령은 쓰기 고려 "majority" 를 사용합니다.

과반수 이상의 승인이 필요한 쓰기 고려 (write concern)를 지정하는 경우 명령은 지정된 쓰기 고려 (write concern)를 사용합니다.

샤드 클러스터

샤드 클러스터에서 실행되면 MongoDB는 지정된 쓰기 고려"majority"로 변환합니다.

삭제된 데이터베이스와 동일한 이름으로 새 데이터베이스를 생성하려면 사용 중인 MongoDB 버전에 따라 dropDatabase 명령을 사용하기 위한 다음 추가 단계를 따라야 합니다.

  • MongoDB 5.0 이상의 경우 다음을 수행해야 합니다.

    1. 추가 단계가 필요하지 dropDatabase mongos 않은 에서 명령을 실행합니다.

  • MongoDB 4.2의 경우 다음을 수행해야 합니다.

    1. mongos 에서 dropDatabase 명령을 실행합니다

    2. 명령이 성공적으로 완료되면mongos 에서 dropDatabase 명령을 한 번 더 실행합니다

    3. 해당 데이터베이스에 읽거나 쓰기 전에 모든 mongos 인스턴스에서 flushRouterConfig 명령을 사용합니다.

이러한 단계를 통해 모든 cluster 노드는 새 데이터베이스의 프라이머리 샤드 위치를 포함하는 메타데이터 캐시를 새로 고칠 수 있습니다. 그렇지 않으면 읽기 데이터를 놓칠 수 있으며 올바른 샤드에 데이터를 쓰지 못할 수도 있습니다. 복구하려면 수동으로 개입해야 합니다.

MongoDB 부터 5 시작.0,dropDatabase 명령 및 메서드는 에서 관리 데이터베이스 db.dropDatabase() 또는 config 데이터베이스 를 삭제하려고 하면 오류를 mongos 반환합니다.

경고

관리 데이터베이스 또는 config 데이터베이스를 삭제하면 클러스터가 사용할 수 없는 상태가 될 수 있습니다.

메서드 및 는 삭제된 데이터베이스에서 열리거나 삭제된 데이터베이스의 컬렉션에서 열린 모든 변경 db.dropDatabase() 스트림dropDatabase 대해 무효화 를 생성합니다.

mongosh 의 다음 예제에서는 use <database> 작업을 사용하여 현재 데이터베이스를 temp 데이터베이스로 전환한 다음 dropDatabase 명령을 사용하여 temp 데이터베이스를 삭제합니다.

use temp
db.runCommand( { dropDatabase: 1 } )

다음도 참조하세요.

← drop