【MongoDB学习笔记21】MongoDB的复合索引
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快;但是只有首先使用索引进行排序时,索引才有用;例如下面的排序里,"username"上的索引就没有起作用:> db.users.fi
千家信息网最后更新 2026年10月31日【MongoDB学习笔记21】MongoDB的复合索引
索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快;但是只有首先使用索引进行排序时,索引才有用;
例如下面的排序里,"username"上的索引就没有起作用:
> db.users.find().sort({"age":1,"username":1})
上面的命令中先根据age排序,在根据username排序,所以username作用并不大。为了优化这个排序,需要在age和username上建立索引:
> db.users.ensureIndex({"age":1,"username":1})
这样就在users集合上建立了一个复合索引(compound index),复合索引就是一个建立在多个字段上的索引。
一、选择索引的方向
索引默认是升序的,在多索引查询的时候,可能需要让索引键的方向不同。例如:
> db.users.ensureIndex({"age":1,"username":-1})或者
> db.users.ensureIndex({"age":-1,"username":1})二者是等价的;
年龄按照0-9的顺序排序,在每个年龄分组中安装Z-A的顺序排列;或者用户名按照A-Z的顺利排序,在每个用户分组中按照9-0排序的。
二、使用隐式索引
复合索引在对不同的查询可以表现为不同的索引。如果有一个{"age":1,"username":1}索引,age字段会自动被排序,好似有个{"age":1}的索引;
可以推论,如果有{"a":1,"b":1…….."z":1}的索引,就会有{"a":1},{"a":1,"b":1},{"a":1,"b":1,"c":1}….一系列的索引;
但是,{"b":1}或者{"b":1,"c":1}就不能作为索引来优化查询,意味着只能只能按照索引顺序来优化查询。
索引
排序
顺序
查询
不同
作用
字段
年龄
方向
用户
面的
分组
不大
升序
只有
命令
多个
就是
意味
文档
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
互联网高科技
互联网佳科技有限公司
广州百单互联网科技有限公司
美国互联网保险保险科技
上海互联网科技有限公司
万易互联网科技有限公司
宜安科技 互联网金融
深圳天众互联网科技公司
海南科技产业互联网平台
北京三清互联网科技
深圳前海聚择互联网科技有限公司
深圳国际航运科技和互联网
重庆互联网医院沙龙医盟信息科技
佛山市翊博互联网络科技有限公司
上海创道互联网络科技有限公司
互联网科技包装股份有限公司上市
中国新注册互联网科技
互联网科技职业技能培训学校
科技互联网专业务虚会材料
博彦科技互联网金融
上海亿帐通互联网科技
互联网科技类展会
民营互联网公司国防科技
乌鲁木齐新华智原互联网科技学校
工业互联网山东科技大学
宇信科技在杭州互联网排第几
工业互联网科技创业
上海互联网科技园景观
武汉亿视互联网科技有限公司