《MongoDB入门教程》第28篇 删除索引
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MongoDB入门教程》第28篇 删除索引相关的知识,希望对你有一定的参考价值。
本文将会介绍 MongoDB 删除索引的 dropIndex() 方法。
dropIndex() 方法
集合的 dropIndex() 方法可以用于删除索引,语法如下:
db.collection.dropIndex(index)
其中,index 代表了想要删除的索引,它可以是一个指定索引名称的字符串,也可以是描述索引定义的文档。
注意,_id 字段上的默认索引无法被删除。
dropIndex() 示例
示例一:删除单个索引
首先,使用以下命令基于 movies 集合中的“Release Date”字段创建一个索引:
db.movies.createIndex('Release Date': 1)
'Release Date_1'
以上语句创建了一个名为“”的索引。
其次,利用 getIndexes() 方法查看 movies 集合中的全部索引:
db.movies.getIndexes()
[
v: 2, key: _id: 1 , name: '_id_' ,
v: 2, key: Title: 1 , name: 'Title_1'
v: 2, key: 'Release Date': 1 , name: 'Release Date_1'
]
接下来,使用 dropIndex() 删除索引“Release Date_1”:
db.movies.dropIndex('Release Date_1')
nIndexesWas: 3, ok: 1
返回结果显示已经删除了一个索引。
最后,再次使用 getIndexes() 方法查看索引:
db.movies.getIndexes()
[
v: 2, key: _id: 1 , name: '_id_' ,
v: 2, key: Title: 1 , name: 'Release Date_1'
]
示例二:基于定义删除索引
首先,重新创建基于“Release Date”字段的索引:
db.movies.createIndex('Release Date': 1)
'Release Date_1'
查看 movies 集合上的索引:
db.movies.getIndexes()
[
v: 2, key: _id: 1 , name: '_id_' ,
v: 2, key: Title: 1 , name: 'Title_1'
v: 2, key: 'Release Date': 1 , name: 'Release Date_1'
]
然后,基于索引“Release Date_1”的定义删除该索引:
db.movies.dropIndex('Release Date': 1);
nIndexesWas: 3, ok: 1
示例三:删除所有非主键索引
从 MongoDB 4.2 开始,无法使用集合的 dropIndex(‘*’) 删除所有非主键(_id)索引,而是需要使用 dropIndexes() 方法:
db.collection.dropIndexes()
首先,重新创建基于“Release Date”字段的索引:
db.movies.createIndex('Release Date': 1)
'Release Date_1'
查看 movies 集合上的索引:
db.movies.getIndexes()
[
v: 2, key: _id: 1 , name: '_id_' ,
v: 2, key: Title: 1 , name: 'Title_1'
v: 2, key: 'Release Date': 1 , name: 'Release Date_1'
]
最后,使用 dropIndexes() 方法删除 _id 之外的其他索引:
db.movies.dropIndexes()
nIndexesWas: 3,
msg: 'non-_id indexes dropped for collection',
ok: 1
以上是关于《MongoDB入门教程》第28篇 删除索引的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB索引 --- 入门篇:学习使用MongoDB数据库索引
《MongoDB入门教程》第18篇 文档更新之$unset操作符