Docs 菜单

Docs 主页开发应用程序MongoDB Manual

dropDatabase

在此页面上

  • 定义
  • 语法
  • 命令字段
  • 行为
  • 例子
dropDatabase

dropDatabase命令会删除当前数据库,并删除关联的数据文件。

该命令具有以下语法:

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

该命令采用以下可选字段:

字段
说明
writeConcern

可选。 表达大于 时要使用的 写关注(write"majority" concern) 的文档

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

省略使用 "majority" 的默认/最小写入关注。

当在副本集上发出时,如果指定的写关注(write concern)导致成员确认少于写关注(write concern)"majority" ,则该操作使用"majority" 。否则,使用指定的写关注(write concern)。

在分片集群上发出时,MongoDB 会将指定的写关注转换为 "majority"

另请参阅行为。

comment

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

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"

如果打算创建与已删除的数据库同名的新数据库,则必须按照以下附加步骤使用dropDatabase命令(特定于您的 MongoDB 版本):

  • 对于 MongoDB 5.0 及更高版本,您必须:

    1. dropDatabasemongos 上运行 命令,无需执行其他步骤。

  • 对于MongoDB 4.2 ,您必须:

    1. mongos 上运行dropDatabase命令

    2. 命令成功完成后,在 mongos 上再次运行dropDatabase命令

    3. 在读取或写入该数据库之前,对所有 mongos 实例使用 flushRouterConfig 命令。

这些步骤确保所有集群节点刷新其元数据缓存,其中包括新数据库主分片的位置。否则,您可能会在读取时丢失数据,并且可能无法将数据写入正确的分片。要恢复,您必须手动干预。

从 MongoDB5 0开始。如果您尝试从 中删除 管理员数据库db.dropDatabase() 配置数据库 , 、dropDatabase 命令和mongos 方法会返回错误。

警告

删除管理数据库配置数据库可能会使您的集群处于不可用状态。

db.dropDatabase()方法和 为在已删除的数据库上打开或在已删除的数据库中的集合上打开的任何dropDatabase 变更流 创建 无效 。

mongosh中的以下示例使用use <database>操作将当前数据库切换到temp数据库,然后使用dropDatabase命令删除temp数据库:

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

提示

另请参阅:

← 删除