Docs 菜单

Docs 主页开发应用程序MongoDB Manual

db.collection.drop()

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 行为
  • 例子
db.collection.drop(<options>)

重要

mongosh 方法

本页介绍了 mongosh方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。

有关数据库命令,请参阅 drop 命令。

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

对于传统 mongo Shell 文档,请参阅相应 MongoDB Server 版本的文档:

mongo shell v4.4

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

返回:
  • true 成功删除集合时返回 true。
  • false (当要删除的集合不存在时)。

注意

对分片集群运行时,db.collection.drop() 始终返回 true

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

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

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

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

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

字段
说明
writeConcern

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

在分片集群上发出时, 会将 命令及其帮助程序mongos dropdb.collection.drop() 写关注 转换为"majority"

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

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

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

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

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

    警告

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

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

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

对于分片集群,如果您使用drop()方法,然后创建同名的新collection,则必须:

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

版本 4.2 中进行了更改

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

MongoDB 4之前的版本。 2 、 db.collection.drop()获得了对父数据库的独占锁,阻止对数据库及其所有集合的所有操作,直到操作完成。

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

db.students.drop()

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

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

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