Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

db.collection.drop()

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 行为
  • 例子

带驱动程序的 MongoDB

本页面提供 mongosh 方法的相关信息。要查看 MongoDB 驱动程序中的等效方法,请参阅编程语言的相应页面:

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.drop(<options>)

从数据库中删除集合或视图。该方法还会删除与删除的集合关联的任何索引。该方法为 drop 命令提供了一个包装器。

返回:true

注意

如果指定的集合不存在, db.collection.drop() 仍返回 true

可以使用 db.collection.drop() 查找托管在以下环境中的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

drop() 方法采用以下形式:

db.collection.drop( { writeConcern: <document> } )

drop() 方法接受带以下字段的可选文档:

字段
说明
writeConcern

可选。表达 db.collection.drop() 操作的写关注的文档。省略以使用默认的写关注。

在分片集群上发出时,mongosdrop 命令和其辅助程序 db.collection.drop()写关注转换为 "majority"

  • db.collection.drop()方法和 drop 命令会对已删除集合上打开的任何变更流创建失效

  • 在删除目标集合之前,db.collection.drop() 方法和 drop 命令会中止目标集合上任何正在进行的索引构建。

    对于副本集或分片副本集,中止主节点上的索引不会同时中止从节点索引构建。MongoDB 尝试中止主节点上指定索引正在进行的构建。如果成功,则会创建关联的 abort oplog 条目。节点如果有正在进行的构建的副本,则在提交或中止索引构建之前会等待来自主节点的提交或中止 oplog 条目。

  • 删除集合将删除其关联的区域/标记范围。

  • 从 MongoDB 5.0 开始,如果您尝试从 mongos管理员数据库配置数据库中删除集合,那么 drop 命令和 db.collection.drop() 方法将返回错误。要删除这些集合,请连接到配置服务器并在其中运行命令。

    警告

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

  • 从 MongoDB 6.0 开始,db.collection.drop() 方法会删除指定的集合以及与加密字段相关的所有内部集合。

    警告

    db.collection.drop() 方法的行为与驱动程序 drop 方法的行为不同。驱动程序的连接必须启用自动加密,才能删除指定的集合以及与加密字段相关的任何内部集合。mongosh 始终删除指定的集合以及与加密字段相关的任何内部集合。

在分片集群上,如果创建的集合与在 MongoDB 5.0 之前已删除的某一集合同名,mongos 则可能会将操作转发到错误的分片。为避免此情况,请遵循以下特定于版本的说明:

对于运行 MongoDB 5.0 或更高版本的分片集群,无需执行任何特殊动作。使用 drop() 方法,然后创建具有相同名称的新集合。

对于分片集群,如果使用 drop() 方法,然后创建同名的新集合,则必须采取以下任一措施:

刷新缓存的路由表是首选过程,因为它比使用 db.collection.remove() 删除分片集合更快。只有在不想刷新缓存的情况下,才使用 remove() 方法。

db.collection.drop() 在操作期间获得对指定集合的独占锁。对集合的所有后续操作都必须等到 db.collection.drop() 释放该锁为止。

以下操作会删除当前数据库中的 students 集合。

db.students.drop()

db.collection.drop() 接受选项文档。

以下操作会删除当前数据库中的 students 集合。该操作使用 1 写关注:

db.students.drop( { writeConcern: { w: 1 } } )

后退

db.collection.distinct