dropIndex() - 删除指定索引
安全地删除集合的指定索引。
📑 目录
概述
dropIndex() 方法用于删除集合的指定索引。支持安全检查,禁止删除 _id 索引。
使用场景:
- 删除不再使用的索引
- 优化索引结构
- 索引重建前的清理
- 测试和开发环境清理
语法
参数
indexName(必需)
要删除的索引名称。
类型: String
示例:
"email_1"- 单字段索引"email_unique"- 自定义名称的索引"user_status_idx"- 复合索引
限制:
- ❌ 不能删除
_id_索引(MongoDB 强制限制) - ❌ 不能为空字符串
返回值
类型: Promise<Object>
格式:
代码示例
示例 1: 删除单个索引
示例 2: 检查后删除
示例 3: 错误处理
示例 4: 批量删除流程
示例 5: 安全删除模式
错误处理
1. 索引不存在
错误码: MONGODB_ERROR
消息: "索引不存在: {indexName}"
解决方案:
2. 禁止删除 _id 索引
错误码: INVALID_ARGUMENT
消息: "不允许删除 _id 索引"
原因: MongoDB 强制要求每个集合必须有 _id 索引
解决方案:
3. 权限不足
错误码: MongoDB 错误
消息: "not authorized"
解决方案: 确保数据库用户有 dropIndex 权限
安全建议
1. 删除前备份
2. 生产环境注意事项
3. 回滚方案
相关方法
dropIndexes()- 删除所有索引createIndex()- 创建索引listIndexes()- 列出所有索引- 索引管理完整指南 - 索引管理综合文档
dropIndexes() - 删除所有索引
删除集合的所有索引(_id 索引除外)。
语法(dropIndexes() - 删除所有索引)
参数(dropIndexes() - 删除所有索引)
无参数。
返回值(dropIndexes() - 删除所有索引)
类型: Promise<Object>
格式:
代码示例(dropIndexes() - 删除所有索引)
示例 1: 删除所有索引
示例 2: 重建所有索引
示例 3: 集合不存在时的处理
安全建议(dropIndexes() - 删除所有索引)
重要警告:
- ⚠️ 此操作会删除所有自定义索引
- ⚠️ 可能严重影响查询性能
- ⚠️ 生产环境慎用
推荐做法: