Navigation

dropDatabase

On this page

Definition

dropDatabase

The dropDatabase command drops the current database, deleting the associated data files.

The command has the following form:

{ dropDatabase: 1, writeConcern: <document>}

The command takes the following optional field:

Field Description
writeConcern

Optional. 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 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.

The mongo shell also provides the helper method db.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 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

Changed in version 3.6.

Replica Sets

At minimum, dropDatabase waits until all collections drops in the database have propagated to a majority of the replica set members (i.e. uses the write concern "majority").

If you specify a write concern that requires acknowledgement from fewer than the majority, the command uses write concern "majority".

If you specify a write concern that requires acknowledgement from more than the majority, the command uses the specified write concern.

Sharded Clusters

When issued on a sharded cluster, MongoDB converts the specified write concern to "majority".

Warning

Starting in MongoDB 4.2:

If you drop a database and create a new database with the same name, you must either:

  • Restart all mongos instances and all mongod shard members (including the secondary members);
  • Use the flushRouterConfig command on all mongos instances and all mongod shard members (including the secondary members) before reading or writing to that database.

This ensures that the mongos and shard instances refresh their metadata 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 to the 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, you must either restart all mongos instances, or use the flushRouterConfig command on all mongos instances before reading or writing to that database. This ensures that the mongos instances refresh their metadata 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 to the correct shard. To recover, you must manually intervene.

Change Streams

The db.dropDatabase() method and dropDatabase create an invalidate Event 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 dropDatabase command to drop the temp database:

use temp
db.runCommand( { dropDatabase: 1 } )
←   drop dropConnections  →