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

猜你喜欢

转载自blog.csdn.net/horses/article/details/129201370