db.collection.dropIndexes()
在本页面
定义
db.collection.
dropIndexes
()
_id
从集合中删除指定的一个或多个索引(字段中的索引除外 )。
您可以使用该方法执行以下操作:
_id
从集合中删除除索引之外的所有内容。从集合中删除指定的索引。要指定索引,可以通过以下方法之一:
索引规范文档(除非索引是 文本索引,在这种情况下,请使用索引名称删除):
索引名称:
建议
若要获取索引的名称,请使用
db.collection.getIndexes()
方法。
从集合中删除指定的索引。(从MongoDB 4.2开始可用)。要指定要删除的多个索引,请向该方法传递一个索引名称数组:
如果索引名称数组包含不存在的索引,则该方法将出错,而不会删除任何指定的索引。
建议
若要获取索引的名称,请使用
db.collection.getIndexes()
方法。
db.collection.dropIndexes()
方法采用以下可选参数:
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
索引您不能在_id
字段上删除默认索引。
文本索引
要删除文本索引,请指定索引名称而不是索引规范文档。
译者:李冠飞
校对:
最后更新于