最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[MongoDB] MongoDB索引(一)

[复制链接]
跳转到指定楼层
楼主
发表于 2019-9-24 11:24:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

原文地址
一、介绍
我们已经很清楚索引会提高查询效率。如果没有索引,MongoDB必须对全部集合进行扫描,即,扫描集合中每条文档以选择那些符合查询条件的文档。对查询来说如果存在合适的索引,则MongoDB可以利用索引减少扫描的文档数。
索引是一种特殊的数据结构,其中存储了集合的数据集的一小部分,以便容易遍历。索引本质上存储的其实是单个字段或者字段组的值,并根据字段值进行排序。索引的排序支持有效的相等比较和基于范围的查询操作。另外,MongoDB通过索引中的排序返回存储的结果。
下图说明了一个查询并对匹配文档利用索引排序:

MongoDB的索引通常与其他数据库系统中的索引类似。MongoDB在集合这一层定义索引,并对一个集合中的任何字段或者文档的子字段支持索引操作。
注:MongoDB索引使用B树数据结构
索引类型
MongoDB提供一系列不同的索引类型以支持不同的数据和查询
默认 _id
所有的MongoDB集合有一个_id字段上的索引,这个索引是默认存在的。如果程序没有特别指定_id的值,那驱动程序或者Mongod将创建一个_id字段,其值为ObjectId。
_id索引是唯一的,并且不允许客户端插入两个_id字段相同的文档。
单字段
除了默认_id上的索引,MongoDB支持文档中单个字段上的用户自定义的索引创建,此索引可以是升序,也可以是降序。
对单字段索引和排序操作来说,索引键的排序顺序(升序或降序)无所谓,因为MongoDB可以从另一个方法遍历索引。
复合索引
MongoDB也支持对多字段的用户自定义索引,即,复合索引。
复合索引中字段的顺序是有意义的。例如,如果一个复合索引的组成为{userid:1, score: -1},那索引排序为首先对userid升序排序,然后对于userid相同的文档,按score的降序排序。
对复合索引和排序操作来说,索引键的排序顺序(升序或降序)将决定这个索引是否支持某种排序操作。详情可参见复合索引的索引顺序对最终排序顺序的影响。
参考复合索引多字段排序可获取复合索引的更多信息。
多键索引(Multikey Index)
MongoDB使用多键索引对存储在数组中的内容进行加索引。如果对一个拥有数组值的字段加索引,MongoDB创建此数组的每个元素上的索引。多键索引允许查询选择包含数组字段的文档,而匹配条件可以是数组的一个或多个元素。如果要被加索引的字段包含一个数组值,并且客户端不明确指定多键类型,那么MongoDB会自动决定是否创建多键索引。
如果要获取多键索引的更多信息,参见多键索引多键索引边界
以下可参考原文,点击此处跳转

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-14 01:06

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表