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

db.collection.dropIndex()

本页内容

  • 定义
  • 兼容性
  • 行为
  • 示例

带有驱动程序的MongoDB

本页介绍了以下内容:mongosh 方法。要查看特定编程语言的等效方法,请参阅相应页面

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

从集合中删除或移除指定的索引。

注意

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

  • 您不能指定 db.collection.dropIndex("*") 来删除所有非 _id 索引。请使用db.collection.dropIndexes() 代替。

要获取 db.collection.dropIndex() 方法的索引名称或索引规范文档,请使用 db.collection.getIndexes() 方法。

db.collection.dropIndex() 方法接受以下参数

参数
类型
描述
index
字符串或文档

必需。指定要删除的索引。您可以通过索引名称或索引规范文档指定索引。

要删除一个 文本 索引,请指定索引名称。

您不能指定 "*" 来删除所有非 _id 索引。请使用 db.collection.dropIndexes() 代替。

如果指定的索引仍在构建中,db.collection.dropIndex() 将尝试停止正在进行的构建。停止索引构建的效果与删除已构建的索引相同。有关更完整的文档,请参阅停止正在进行的索引构建

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

注意

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

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

db.collection.dropIndex() 在操作期间会锁定指定的集合。所有后续对该集合的操作都必须等待 db.collection.dropIndex() 释放锁。

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

对于复制集,请在 主节点 上运行 db.collection.dropIndex()。主节点将停止索引构建并创建相关的 "abortIndexBuild" 操作日志 条目。复制节点将复制 "abortIndexBuild" 操作日志条目,停止正在进行的索引构建并丢弃构建任务。有关索引构建过程的详细文档,请参阅 索引构建过程

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

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

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

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

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

考虑一个 pets 集合。在 pets 集合上调用 db.collection.getIndexes() 方法将返回以下索引

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"cat" : -1
},
"name" : "catIdx"
},
{
"v" : 2,
"key" : {
"cat" : 1,
"dog" : -1
},
"name" : "cat_1_dog_-1"
}
]

在字段 cat 上的单一字段索引具有用户指定的名称 catIdx [1] 以及索引规范文档 { "cat" : -1 }

要删除索引 catIdx,您可以使用索引名称

db.pets.dropIndex( "catIdx" )

或者您可以使用索引规范文档 { "cat" : -1 }

db.pets.dropIndex( { "cat" : -1 } )
[1] 在索引创建过程中,如果用户没有指定索引名称,系统将根据索引键字段和值使用下划线生成名称,例如 cat_1

返回

db.collection.drop

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