在MongoDB中删除索引的3种方法

发布于

MongoDB提供了几种删除一个或多个索引的方法。

若要删除单个索引,可以使用该方法。dropIndex()

要删除多个索引,可以使用该方法或管理命令。dropIndexes()``dropIndexes

方法dropIndex()

如果只需要删除一个索引,则可以使用该方法。此方法接受索引名称或其规范文档。[dropIndex()](https://database.guide/mongodb-dropindex/ "MongoDB dropIndex()")

下面是使用索引名称删除索引的示例:

db.bars.dropIndex("location_2dsphere")

输出:

{ “nIndexesWas” : 3, “ok” : 1 }

这告诉我们调用的索引已成功删除。location_2dsphere

下面是通过传递索引规范文档来删除索引的示例:

db.bars.dropIndex( { "name" : 1 } )

输出:

{ “nIndexesWas” : 2, “ok” : 1 }

我们可以看到,这个指数也被丢弃了。此索引具有 的规范,这是我在创建索引时使用的规范文档。{ "name" : 1 }

该方法是命令的包装器。dropIndex()``dropIndexes

方法dropIndexes()

如果需要删除多个索引,该方法会很方便。您也可以删除单个索引,它只是具有能够删除多个(或所有)索引的附加功能。[dropIndexes()](https://database.guide/mongodb-dropindexes/ "MongoDB dropIndexes()")

此方法接受要删除的每个索引的索引名称或其规范文档。如果要删除多个索引,则必须在数组中提供其名称/规范文档。

下面是使用索引名称删除两个索引的示例:

db.pets.dropIndexes( [ "type_1", "name_1" ])

输出:

{ “nIndexesWas” : 3, “ok” : 1 }

请注意,如果是文本索引,则只能指定索引名称。

您可以通过完全省略参数来删除所有索引(索引除外):_id

db.pets.dropIndexes()

该方法是命令的包装器。dropIndexes()``dropIndexes

命令dropIndexes

该命令允许您执行与该方法相同的操作。如前所述,该方法是命令的包装器[dropIndexes](https://database.guide/mongodb-dropindexes-command/ "MongoDB dropIndexes Command")``dropIndexes()``dropIndexes()``dropIndexes

下面是删除单个索引的示例:

db.runCommand( { dropIndexes: "posts", index: "title_1" })

输出:

{ “nIndexesWas” : 4, “ok” : 1 }

下面是删除多个索引的示例:

db.runCommand( { 
  dropIndexes: "posts", 
  index: [ "tags_1", "body_text" ] 
})

输出:

{ "nIndexesWas" : 3, "ok" : 1 }

要删除所有索引(索引除外),请使用星号通配符 ():_id``*

db.runCommand( { dropIndexes: "posts", index: "*" })

输出:

{
	"nIndexesWas" : 4,
	"msg" : "non-_id indexes dropped for collection",
	"ok" : 1
}