📜  MongoDB – dropIndexes() 方法

📅  最后修改于: 2022-05-13 01:56:58.244000             🧑  作者: Mango

MongoDB – dropIndexes() 方法

MongoDB 是一个 NoSQL 文档类型数据库。默认情况下,_id 字段是任何集合中的索引。此索引值唯一标识集合中的文档。此外,我们可以根据我们的要求创建索引,以加快检索速度并提高 MongoDB 操作的性能。同时,索引过多也是一种开销,导致性能不佳。在那些时候,我们需要删除不需要的索引。所以,MongoDB 提供了 dropIndexes() 方法。此方法从给定的集合中删除指定的索引或所有索引(_id 字段除外)。

句法:

删除所有索引:

删除指定的索引:



这里,索引参数是一个可选参数。它指定要删除的索引/索引。

注意:您可以使用 db.collectionName.createIndex() 方法创建索引并使用 db.collectionName.getIndexes() 方法查看索引。

要点:

  • 从 MongoDB 4.2 开始,要指定要删除的多个索引,我们可以使用以下语法:

在指定索引名称时,我们需要明确给出正确的索引名称,如果提供的索引不可用(即使是一个),则不会删除指定的索引。

  • 从 MongoDB 4.4 版开始,我们也可以使用以下命令删除索引:
  • 从 MongoDB 4.2 开始,此方法只会终止那些使用正在删除的索引的查询。每当发出此命令时,都会建立一个锁,所有操作都必须等到此 dropIndexes() 方法调用结束。
  • 对于删除文本索引,我们应该只使用索引的名称。

例子:



在以下示例中,我们正在使用:

删除 _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。