《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入门教程》第21篇 CRUD之删除文档

《MongoDB入门教程》第21篇 CRUD之删除文档

《MongoDB入门教程》第18篇 文档更新之$unset操作符

《MongoDB入门教程》第18篇 文档更新之$unset操作符

为啥以及何时需要在 MongoDB 中重建索引?