MongoDB 是一个 NoSQL 文档类型数据库。默认情况下,_id 字段是任何集合中的索引。此索引值唯一标识集合中的文档。此外,我们可以根据我们的要求创建索引,以加快检索速度并提高 MongoDB 操作的性能。同时,索引过多也是一种开销,导致性能不佳。在那些时候,我们需要删除不需要的索引。所以,MongoDB 提供了 dropIndexes() 方法。此方法从给定的集合中删除指定的索引或所有索引(_id 字段除外)。
用法:
删除所有索引:
db.collectionName.dropIndexes()
删除指定的索引:
db.collectionName.dropIndexes(<index>)
这里,索引参数是一个可选参数。它指定要删除的索引/索引。
注意:您可以使用 db.collectionName.createIndex() 方法创建索引,并使用 db.collectionName.getIndexes() 方法查看索引。
要点:
- 从 MongoDB 4.2 开始,要指定要删除的多个索引,我们可以使用以下语法:
db.<collection>.dropIndexes( [ “a_1_b_1”, “a_1”, “a_1__id_-1” ] )
在指定索引名称时,我们需要明确给出正确的索引名称,如果提供的索引不可用(即使是一个),则不会删除指定的索引。
- 从 MongoDB 4.4 版开始,我们也可以使用以下命令删除索引:
db.runCommand( { dropIndexes:“collectionName”, index:“<indexname1>, <indexname2>” } )
- 从 MongoDB 4.2 开始,此方法只会终止那些使用正在删除的索引的查询。每当此命令发出时都会建立一个锁,所有操作都必须等到此 dropIndexes() 方法调用结束。
- 对于删除文本索引,我们应该只使用索引的名称。
例子:
在以下示例中,我们正在使用:
Database: ndtvnews
Collection: articles
删除 _id 索引:
在这个例子中,我们试图删除 _id 索引:
在上图中,我们可以看到 _id 和 name 显示为索引。在 Mongodb 中,默认索引是 _id。它不能被丢弃。即使我们尝试丢弃,我们也会得到如下结果:
db.articles.dropIndexes({id:1})
我们有另一个名为 “name” 的索引字段。现在这是一个用户定义的索引,因此我们可以使用 dropIndexes() 方法删除该索引。
db.articles.dropIndexes({name:1})
此处,name:1 表示名称是字段名称并按升序提供。
删除多个索引:
存在超过 1 个索引的可能性。我们可以通过 dropIndexes() 方法轻松删除它们。这将删除集合中除 _id 之外的所有索引,因为它是默认索引。假设我们在文章集合中有多个索引。
上图中“_id”索引为默认索引,另外两个为用户自定义索引。因此,我们将使用 dropIndexes() 方法删除它们。
db.articles.dropIndexes()
在这里,dropIndexes() 方法删除给定集合中存在的所有索引(除了 _id)。
删除指定的索引:
我们已经知道一个集合可以包含多个索引。因此,我们将使用 dropIndexes() 方法删除指定的索引。假设我们在文章集合中有多个索引。
db.articles.dropIndexes("name_1")
在这里,我们使用索引名称删除索引,即 name_1。
相关用法
- MongoDB Update()用法及代码示例
- MongoDB skip()用法及代码示例
- MongoDB limit()用法及代码示例
- MongoDB Distinct()用法及代码示例
- MongoDB getIndexes()用法及代码示例
- MongoDB countDocuments()用法及代码示例
- MongoDB FindOne()用法及代码示例
- MongoDB sort()用法及代码示例
- MongoDB FindAndModify()用法及代码示例
- MongoDB findOneAndDelete()用法及代码示例
- MongoDB dropIndex()用法及代码示例
- MongoDB copyTo()用法及代码示例
注:本文由纯净天空筛选整理自priyarajtt大神的英文原创作品 MongoDB – dropIndexes() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。