当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


MongoDB dropIndexes()用法及代码示例


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。

相关用法


注:本文由纯净天空筛选整理自priyarajtt大神的英文原创作品 MongoDB – dropIndexes() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。