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

db.collection.dropIndexes()

在此页面上

  • 定义
  • 兼容性
  • 行为

带驱动程序的 MongoDB

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

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.dropIndexes()

从集合中删除指定的一个或多个索引(_id 字段上的索引和最后剩余的分片键索引除外)。

您可以使用该方法来:

  • 从集合中删除除 _id 索引之外的所有索引。

    db.collection.dropIndexes()
  • 从集合中删除指定索引。要指定索引,可以向该方法传递以下任一项目:

    • 索引规范文档(除非索引是文本索引,在这种情况下,使用索引名称删除):

      db.collection.dropIndexes( { a: 1, b: 1 } )
    • 索引名称:

      db.collection.dropIndexes( "a_1_b_1" )

      提示

      要获取索引的名称,请使用 db.collection.getIndexes()方法。

  • 从集合中删除指定索引。要指定要删除的多个索引,请向该方法传递一个索引名称数组:

    db.collection.dropIndexes( [ "a_1_b_1", "a_1", "a_1__id_-1" ] )

    如果索引名称数组包含不存在的索引,则该方法会出错,但不会删除任何指定索引。

    提示

    要获取索引的名称,请使用 db.collection.getIndexes()方法。

db.collection.dropIndexes() 方法接受以下可选参数:

Parameter
类型
说明
indexes
字符串或文档或字符串数组

可选。指定要删除的一个或多个索引。

要从集合中删除 _id 索引以外的所有索引,请省略该参数。

要删除单个索引,请指定索引名称、索引规范文档(除非该索引是文本索引)或索引名称的数组。要删除文本索引,请指定索引名称或索引名称的数组,而不是索引规范文档。

要删除多个索引,请指定索引名称的数组。

此方法可用于以下环境中托管的部署:

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令

从 MongoDB 6.0 开始,如果您尝试使用它来删除最后剩下的分片键兼容索引,db.collection.dropIndexes() 会引发错误。将 "*" 传递给 db.collection.dropIndexes() 会删除除 _id 索引和最后剩下的分片键兼容索引(如果存在)之外的所有索引。

从 MongoDB 5.2 开始,即使另一个索引正在构建中,也可以使用 db.collection.dropIndexes() 删除同一个集合上的现有索引。在早期版本中,尝试在进行中的索引构建期间删除其他索引会导致 BackgroundOperationInProgressForNamespace 错误。

dropIndexes() 操作只会终止使用被删除索引的查询。这可能包括在查询规划中考虑索引的查询。

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

如果该方法传递给包含不存在索引的索引名称数组,则该方法会出错,但不会删除任何指定索引。

不能删除 _id 字段上的默认索引。

要删除文本索引,请指定索引名称而不是索引规范文档。

如果为 db.collection.dropIndexes() 指定的索引仍在构建中,db.collection.dropIndexes() 会尝试停止正在进行的构建。停止索引构建与删除已构建的索引效果相同。

对于副本集,请在主节点上运行 db.collection.dropIndexes()。主节点停止索引构建并创建关联的“abortIndexBuild”oplog 条目。复制“abortIndexBuild”oplog 条目的从节点会停止正在进行的索引构建并放弃构建作业。有关索引构建过程的详细文档,请参阅索引构建流程

使用 currentOp 确定与 createIndexesdb.collection.createIndexes() 操作相关的索引构建。有关示例,请参阅主动索引操作

MongoDB 提供对查询规划器隐藏或取消隐藏索引的功能。通过向规划器隐藏索引,您可以评估在不实际删除索引的情况下删除索引的潜在影响。

如果经过评估后,用户决定删除该索引,则您可以删除隐藏索引;即不需要先取消隐藏才能删除。

如有不利影响,用户可以取消隐藏索引,而不必重新创建已删除的索引。由于索引在隐藏期间得到完全维护,因此一旦取消隐藏,索引就立即可用。

有关隐藏索引的更多信息,请参阅隐藏索引

后退

db.collection.dropIndex

在此页面上