dropDatabase
Definition
dropDatabase
- The
dropDatabase
command drops the current database, deletingthe associated data files.
The command has the following form:
- { dropDatabase: 1, writeConcern: <document>}
The command takes the following optional field:
FieldDescriptionwriteConcernOptional. A document expressing the write concern to use if greater than"majority"
- { w: <value>, j: <boolean>, wtimeout: <number> }
Omit to use the default/minimum write concern of"majority"
.
When issued on a replica set, if the specified write concernresults in fewer member acknowledgements than write concern"majority"
, the operation uses"majority"
. Otherwise, the specified writeconcern is used.
When issued on a sharded cluster, MongoDB converts the specifiedwrite concern to"majority"
.
See also Behavior.
The mongo
shell also provides the helper methoddb.dropDatabase()
.
Behavior
Locks
Changed in version 3.6.
The operation takes a database lock.
User Management
Changed in version 2.6: This command does not delete theusers associated with the currentdatabase. To drop the associated users, run thedropAllUsersFromDatabase
command in the database you aredeleting.
Replica Set and Sharded Clusters
Changed in version 3.6.
- Replica Sets
- At minimum,
dropDatabase
waits until all collectionsdrops in the database have propagated to a majority of the replicaset members (i.e. uses the write concern"majority"
).
If you specify a write concern that requires acknowledgement fromfewer than the majority, the command uses write concern"majority"
.
If you specify a write concern that requires acknowledgement frommore than the majority, the command uses the specified write concern.
- Sharded Clusters
- When issued on a sharded cluster, MongoDB converts the specifiedwrite concern to
"majority"
.
Warning
- Starting in MongoDB 4.2:
If you drop a database and create a new database with the same name, youmust either:
- Restart all
mongos
instances and allmongod
shard members (including the secondarymembers); - Use the
flushRouterConfig
command on allmongos
instances and allmongod
shard members (including the secondary members) before readingor writing to that database.This ensures that themongos
and shard instancesrefresh their metadata cache, including the location of theprimary shard for the new database.
- Restart all
Otherwise, the you may miss data on reads, and may not write data tothe correct shard. To recover, you must manually intervene.
- In MongoDB 4.0 and earlier:
- If you drop a database and create a new database with the same name, youmust either restart all
mongos
instances, or use theflushRouterConfig
command on allmongos
instances before reading or writing to that database. Thisensures that themongos
instances refresh theirmetadata cache, including the location of the primary shard for the new database.
Otherwise, the you may miss data on reads, and may not write data tothe correct shard. To recover, you must manually intervene.
Change Streams
The db.dropDatabase()
method and dropDatabase
create an invalidate Event for any Change Streamsopened on the dropped database or opened on the collections in thedropped database.
Example
The following example in the mongo
shell uses the use<database>
operation to switch the current database to the temp
database and then uses the dropDatabase
command to dropthe temp
database:
- use temp
- db.runCommand( { dropDatabase: 1 } )
See also