On this page本页内容
dropDatabase
¶The dropDatabase
command drops the current database, deleting the associated data files.
The command has the following form:
The command takes the following optional field:
writeConcern |
Omit to use the default/minimum write concern of When issued on a replica set, if the specified write concern results in fewer member acknowledgements than write concern When issued on a sharded cluster, MongoDB converts the specified write concern to See also Behavior. |
comment |
A comment can be any valid BSON type (string, integer, object, array, etc).
|
The mongo
shell also provides the helper method db.dropDatabase()
.
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.
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.
Starting in MongoDB 4.4, the db.dropDatabase()
method and dropDatabase
command abort any in-progress index builds on collections in the target database before dropping the database. Aborting an index build has the same effect as dropping the built index. Prior to MongoDB 4.4, attempting to drop a database that contains a collection with an in-progress index build results in an error, and the database is not dropped.
For replica sets or shard replica sets, aborting an index on the primary does not simultaneously abort secondary index builds. MongoDB attempts to abort the in-progress builds for the specified indexes on the primary and if successful creates an associated abort
oplog entry. Secondary members with replicated in-progress builds wait for a commit or abort oplog entry from the primary before either committing or aborting the index build.
Changed in version 3.6.在版本3.6中更改。
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.
When issued on a sharded cluster, MongoDB converts the specified write concern to "majority"
.
For MongoDB 4.2 and previous, when executing the dropDatabase
command, you must perform the following additional steps if you intend to create a new database with the same name as the dropped database.
Note
MongoDB 4.4 does not require these additional steps when dropping and recreating a database with the same name.
mongos
instances and all mongod
shard members (including the secondary members);flushRouterConfig
command on all mongos
instances and all mongod
shard members (including the secondary members) before reading or writing to that database.mongos
instances;flushRouterConfig
command on all mongos
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.
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.
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:
See also参阅