MongoDB – dropIndexes() 方法
MongoDB 是一个 NoSQL 文档类型数据库。默认情况下,_id 字段是任何集合中的索引。此索引值唯一标识集合中的文档。此外,我们可以根据我们的要求创建索引,以加快检索速度并提高 MongoDB 操作的性能。同时,索引过多也是一种开销,导致性能不佳。在那些时候,我们需要删除不需要的索引。所以,MongoDB 提供了 dropIndexes() 方法。此方法从给定的集合中删除指定的索引或所有索引(_id 字段除外)。
句法:
删除所有索引:
db.collectionName.dropIndexes()
删除指定的索引:
db.collectionName.dropIndexes(
这里,索引参数是一个可选参数。它指定要删除的索引/索引。
注意:您可以使用 db.collectionName.createIndex() 方法创建索引并使用 db.collectionName.getIndexes() 方法查看索引。
要点:
- 从 MongoDB 4.2 开始,要指定要删除的多个索引,我们可以使用以下语法:
db.
在指定索引名称时,我们需要明确给出正确的索引名称,如果提供的索引不可用(即使是一个),则不会删除指定的索引。
- 从 MongoDB 4.4 版开始,我们也可以使用以下命令删除索引:
db.runCommand( { dropIndexes: “collectionName”, index: “
- 从 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 表示 name 是字段名称并按升序提供。
删除多个索引:
存在超过 1 个索引的可能性。我们可以通过 dropIndexes() 方法轻松删除它们。这将删除集合中除 _id 之外的所有索引,因为它是默认索引。假设我们在文章集合中有多个索引。
上图中,“_id”索引为默认索引,另外两个为用户自定义索引。因此,我们将使用 dropIndexes() 方法删除它们。
db.articles.dropIndexes()
在这里, dropIndexes() 方法删除给定集合中存在的所有索引(除了 _id)。
删除指定的索引:
我们已经知道一个集合可以包含多个索引。因此,我们将使用 dropIndexes() 方法删除指定的索引。假设我们在文章集合中有多个索引。
db.articles.dropIndexes("name_1")
在这里,我们使用索引名称删除索引,即 name_1。