MongoDB-CN-Manual
搜索文档…
GitBook 提供支持
db.collection.dropIndexes()
在本页面

定义

    db.collection. dropIndexes ()
_id从集合中删除指定的一个或多个索引(字段中的索引除外 )。
您可以使用该方法执行以下操作:
    _id从集合中删除除索引之外的所有内容。
    1
    db.collection.dropIndexes()
    Copied!
    从集合中删除指定的索引。要指定索引,可以通过以下方法之一:
      索引规范文档(除非索引是 文本索引,在这种情况下,请使用索引名称删除):
      1
      db.collection.dropIndexes( { a: 1, b: 1 } )
      Copied!
      索引名称:
      1
      db.collection.dropIndexes( "a_1_b_1" )
      Copied!
      建议
      若要获取索引的名称,请使用 db.collection.getIndexes()方法。
    从集合中删除指定的索引。(从MongoDB 4.2开始可用)。要指定要删除的多个索引,请向该方法传递一个索引名称数组:
    1
    db.collection.dropIndexes( [ "a_1_b_1", "a_1", "a_1__id_-1" ] )
    Copied!
    如果索引名称数组包含不存在的索引,则该方法将出错,而不会删除任何指定的索引。
    建议
    若要获取索引的名称,请使用 db.collection.getIndexes()方法。
db.collection.dropIndexes()方法采用以下可选参数:
参数
类型
描述
indexes
string 或 document 或 array of strings
可选的。指定要删除的一个或多个索引。 要删除集合中除_id索引以外的所有索引,请省略参数。 要删除单个索引,请指定索引名称,索引规范文档(除非索引是 文本索引)或索引名称的数组。要删除文本索引,请指定索引名称或索引名称的数组,而不是索引规范文档。 要删除多个索引(从MongoDB 4.2开始可用),请指定一个索引名称数组。
db.collection.dropIndexes()是围绕着一个包装 dropIndexes命令。

行为

只kill相关查询

从MongoDB 4.2开始,该dropIndexes()操作只会终止使用正在删除的索引的查询。这可能包括将索引视为查询计划一部分的 查询。
在MongoDB 4.2之前,在集合上删除索引将杀死该集合上所有打开的查询。

资源锁定

在版本4.2中进行了更改。
db.collection.dropIndexes()在操作期间获得对指定集合的排他锁。集合上的所有后续操作都必须等到db.collection.dropIndexes()释放锁为止。
在MongoDB 4.2之前的版本中,db.collection.dropIndexes()获得了对父数据库的排他锁,阻止了对数据库及其所有集合的所有操作,直到操作完成。

索引名称

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

_id索引

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

文本索引

要删除文本索引,请指定索引名称而不是索引规范文档。
译者:李冠飞
校对:
最近更新 1yr ago