在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
}