- Reference >
mongo
Shell Methods >- Database Methods >
- db.dropDatabase()
db.dropDatabase()¶
On this page
Definition¶
-
db.
dropDatabase
(<writeConcern>)¶ Removes the current database, deleting the associated data files.
The
db.dropDatabase()
method takes an optional parameter:Field Description writeConcern Optional. A document expressing the write concern to use if greater than
"majority"
.Omit to use the default/minimum write concern of
"majority"
.When issued on a replica set, if the specified write concern results in fewer member acknowledgements than write concern
"majority"
, the operation uses"majority"
. Otherwise, the specified write concern is used.When issued on a sharded cluster, MongoDB converts the specified write concern to
"majority"
.See also Behavior.
New in version 4.2.
Behavior¶
The db.dropDatabase()
wraps the dropDatabase
command.
Locks¶
Starting in version 4.2.2, the operation takes an exclusive (X) database lock only.
In versions 3.6-4.2.1, the operation takes an exclusive (X) database lock while dropping the collections in the database but a global lock when dropping the now-empty database.
User Management¶
This command does not delete the
users associated with the current
database. To drop the associated users, run the
dropAllUsersFromDatabase
command in the database you are
deleting.
Replica Set and Sharded Clusters¶
- Replica Sets
At minimum,
db.dropDatabase()
waits until all collection drops in the database have propagated to a majority of the replica set members (i.e. uses the write concern"majority"
).Starting in MongoDB 4.2, you can specify a write concern to the method. If you specify a write concern that requires acknowledgement from fewer than the majority, the method uses write concern
"majority"
.If you specify a write concern that requires acknowledgement from more than the majority, the method uses the specified write concern.
- Sharded Clusters
When issued on a sharded cluster, MongoDB converts the specified write concern to
"majority"
.If you intend to create a new database with the same name as the dropped database, you must follow these additional steps for using the
dropDatabase
command, specific to your version of MongoDB:For MongoDB 4.2, you must:
- Run the
dropDatabase
command on amongos
. - Once the command successfully completes, run the
dropDatabase
command once more on amongos
. - Use the
flushRouterConfig
command on allmongos
instances before reading or writing to that database.
- Run the
For MongoDB 4.0 and earlier, you must:
Run the
dropDatabase
command on amongos
.Connect to each shard’s primary and verify that the namespace has been dropped. If it has not, rerun the
dropDatabase
command again directly from the primary.Connect to a
mongos
, switch to the config database, and remove any reference to the removed namespace from thedatabases
,collections
,chunks
,tags
, andlocks
collections:Where
DATABASE
represents the namespace of the database you just dropped.Connect to the primary of each shard, and remove any reference to the removed namespace from the
cache.databases
,cache.collections
, andcache.chunks.DATABASE.COLLECTION
collections:Where
DATABASE
represents the namespace of the database you just dropped.Use the
flushRouterConfig
command on allmongos
instances before reading or writing to that database.
These steps ensure that all cluster nodes refresh their metadata cache, which includes the location of the primary shard for the new database. Otherwise, you may miss data on reads, and may not write data to the correct shard. To recover, you must manually intervene.
Change Streams¶
The db.dropDatabase()
method and dropDatabase
command create an invalidate for any
Change Streams opened on the dropped database or opened on the
collections in the dropped 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 db.dropDatabase()
method to drop
the temp
database:
See also