
MongoDB 对索引的创建查询修改删除 附代码
发布日期:2025-04-14 14:29:27
浏览次数:8
分类:精选文章
本文共 2066 字,大约阅读时间需要 6 分钟。
MongoDB 索引管理指南
索引的重要性
在 MongoDB 中,索引是一种优化查询性能的机制。当数据库查询时,如果没有索引,系统会逐一扫描所有文档,这在数据量较大时会导致效率极低。相比之下,合理使用索引可以显著提升查询速度,类似于 MySQL 中的前缀索引和索引顺序。
1. 索引的增删改查
MongoDB 提供了强大的索引管理功能,支持增删改查操作。
2. 创建索引
创建索引主要通过 db.collection.createIndex()
方法(适用于 MongoDB 3.0 及以上版本),在较旧版本中使用 ensureIndex()
代替。创建索引时可以指定以下参数:
参数 | 描述 |
---|---|
v | 索引版本号,建议手动设置以便区分不同的索引。 |
name | 索引名称(默认为基于索引字段名生成的命名)。 |
unique | 是否为唯一索引(默认:false )。 |
weights | 索引的权重(1-99999),用于优化查询性能。 |
sparse | 是否为稀疏索引(默认:false )。如果设置为 true ,则索引只在文档中存在该字段时才生效。 |
background | 索引创建是否阻塞其他操作(默认:false )。 |
expireAfterSeconds | 索引的生存时间(秒为单位)。 |
创建索引时,键值对的顺序决定了索引的顺序,常用值为 1
表示升序,-1
表示降序。
索引类型包括:
- 唯一索引:确保文档中字段值唯一性。
- 普通索引:用于快速定位文档。
- 复合索引:结合多个字段的查询条件,适合复杂查询场景。
示例:
// 创建唯一索引db.collection.createIndex({ "id": 1 }, { unique: true });// 创建普通索引db.collection.createIndex({ "id": 1 });// 创建复合索引db.collection.createIndex({ "id": 1, "name": 1 }, { background: true });
索引创建成功后,会返回类似以下内容:
{ "raw": { "xxx": { "createdCollectionAutomatically": false, "numIndexesBefore": 4, "numIndexesAfter": 5, "ok": 1, "$gleStats": { "lastOpTime": { "ts": xx, "t": xx }, "electionId": ObjectId("xx") } } }, "ok": 1}
通过 db.collection.explain()
可以查看索引使用情况,确认查询是否使用了索引。
3. 查询索引
要查询集合中的索引,可以使用以下方法:
方法 | 描述 |
---|---|
db.collection.getIndexes() | 获取集合的所有索引详情。 |
db.collection.getIndexKeys() | 获取索引的键值。 |
db.collection.totalIndexSize() | 获取索引的总大小(以字节为单位)。 |
db.collection.getIndexSpecs() | 获取索引的详细规范。 |
通过这些方法可以了解索引的配置情况。例如:
// 索引列表示例[ { "v": 1, "key": { "id": 1 }, "name": "id_", "ns": "xxxx.audio_sdk_log" }, { "v": 1, "unique": true, "key": { "id": 1, "name": 1 }, "name": "id_1_name_1", "ns": "xxxx.audio_sdk_log" }]
4. 修改索引
修改索引通常需要重建索引。例如,将一个升序索引改为降序索引:
db.collection.createIndex({ "id": -1 });
5. 删除索引
删除索引需要根据索引名称或配置来执行:
方法 | 描述 |
---|---|
db.collection.dropIndex("索引名称") | 删除特定索引。 |
db.collection.dropIndex() | 删除集合中的所有索引。 |
示例:
// 删除特定索引db.collection.dropIndex("id_1_name_1");// 删除所有索引db.collection.dropIndex();
删除索引成功后,会返回类似以下内容:
{ "raw": { "xxxx": { "nIndexesWas": 9, "ok": 1 } }, "ok": 1}
通过合理管理索引,可以显著提升 MongoDB 数据库的查询性能。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月15日 07时14分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MongoDB 3.0 增删改查及聚合操作,pymongo
2025-04-14
mongoDB 3.0 安全权限访问控制
2025-04-14
MongoDB change stream 详解
2025-04-14
mongodb linux安装
2025-04-14
MongoDB MapReduce使用
2025-04-14
MongoDB Replica Sets + Sharding 实战
2025-04-14
Mongodb sharding转换一个副本集为分片集群
2025-04-14
mongodb 与 c++ 的配合使用
2025-04-14
MongoDB 分片集群技术
2025-04-14
MongoDB 启动基于角色的登录认证功能
2025-04-14
mongodb 命令行操作
2025-04-14
mongodb 和 mongoose 初探
2025-04-14
mongodb 备份压缩_MongoDB实现备份压缩的方法教程 _ 蚂蚁视界
2025-04-14
MongoDB 安装配置
2025-04-14
MongoDB 对索引的创建查询修改删除 附代码
2025-04-14
MSSQL数据库日志满的快速解决办法
2025-04-14
MongoDB 性能调优
2025-04-14
MongoDB 文档字段增删改
2025-04-14