删除索引
您可以从集合中删除特定索引。如果发现对性能有负面影响,您想用新索引替代特定索引,或者不再需要该索引,则可删除。
要删除索引,请使用以下 Shell 方法之一:
方法 | 说明 |
---|---|
从集合中删除特定索引。 | |
从集合或索引数组中删除所有可移动索引(如果指定)。 |
关于此任务
您可以删除 _id
字段上的默认索引之外的任何索引。如要删除 _id
索引,您必须删除整个集合。
删除生产环境中频繁使用的索引可能会导致性能下降。在删除索引之前,请考虑隐藏索引以评估删除索引的潜在影响。
开始之前
要删除索引,您需要知道它的名称。要获取集合的所有索引名称,请运行 getIndexes()
方法:
db.<collection>.getIndexes()
步骤
确定要删除的索引后,请对指定的集合使用下列一种删除方法:
删除单个索引
要删除特定索引,请使用 dropIndex()
方法并指定索引名称:
db.<collection>.dropIndex("<indexName>")
删除多个索引
要删除多个索引,请使用 dropIndexes()
方法并指定索引名称数组:
db.<collection>.dropIndexes( [ "<index1>", "<index2>", "<index3>" ] )
删除除_id
索引之外的所有索引
要删除 _id
索引之外的所有索引,请使用 dropIndexes()
方法:
db.<collection>.dropIndexes()
结果
删除索引后,系统返回有关操作状态的信息。
示例输出:
... { "nIndexesWas" : 3, "ok" : 1 } ...
nIndexesWas
的值反映了删除索引前的索引数。
要确认索引已删除,请运行 db.collection.getIndexes()
方法:
db.<collection>.getIndexes()
删除的索引不再显示在 getIndexes()
输出中。
了解详情
要了解有关管理现有索引的更多信息,请参阅管理索引。
要了解如何在 MongoDB Compass 中移除索引,请参阅管理 Compass 中的索引。