文档菜单
文档首页
/
MongoDB 手册
/ / /

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()方法接受以下可选参数

参数
类型
描述
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" 操作日志条目。复制该"abortIndexBuild"操作日志条目的次级节点停止正在进行的索引构建并丢弃构建作业。有关索引构建过程的详细文档,请参阅索引构建过程

使用currentOp来识别与createIndexesdb.collection.createIndexes()操作相关的索引构建。请参阅活动索引操作以获取示例。

MongoDB 提供了隐藏或显示索引以供查询规划器使用的功能。通过从规划器中隐藏索引,可以在实际删除索引之前评估删除索引的潜在影响。

如果评估后用户决定删除索引,可以删除隐藏的索引;即不需要先取消隐藏再删除。

然而,如果影响是负面的,用户可以选择取消隐藏索引,而不是重新创建已删除的索引。由于索引在隐藏期间会完全维护,一旦取消隐藏,索引即可立即使用。

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

返回

db.collection.dropIndex

© . This site is unofficial and not affiliated with MongoDB, Inc.