国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > MongoDB > mongodb有几种索引

mongodb有几种索引

头像

爱喝马黛茶的安东尼

2019-11-19 15:23:013639浏览 · 0收藏 · 0评论


MongoDB索引类型

MongoDB支持多种类型的索引,包括单字段索引、复合索引、多key索引、文本索引等,每种类型的索引有不同的使用场合。

单字段索引 (Single Field Index)

db.person.createIndex( {age: 1} )

上述语句针对age创建了单字段索引,其能加速对age字段的各种查询请求,是最常见的索引形式,MongoDB默认创建的id索引也是这种类型。

{age: 1} 代表升序索引,也可以通过{age: -1}来指定降序索引,对于单字段索引,升序/降序效果是一样的。

复合索引 (Compound Index)

复合索引是Single Field Index的升级版本,它针对多个字段联合创建索引,先按第一个字段排序,第一个字段相同的文档按第二个字段排序,依次类推,如下针对age, name这2个字段创建一个复合索引。

db.person.createIndex( {age: 1, name: 1} )

上述索引对应的数据组织类似下表,与{age: 1}索引不同的时,当age字段相同时,在根据name字段进行排序,所以pos5对应的文档排在pos3之前。

AGE,NAME                                      位置信息

18,adam                                             pos5

18,jack                                                pos3

19,jack                                                pos1

20,rose                                                pos2

21,tony                                                pos4

复合索引能满足的查询场景比单字段索引更丰富,不光能满足多个字段组合起来的查询,比如db.person.find( {age: 18, name: "jack"} ),也能满足所以能匹配符合索引前缀的查询,这里{age: 1}即为{age: 1, name: 1}的前缀,所以类似db.person.find( {age: 18} )的查询也能通过该索引来加速;但db.person.find( {name: "jack"} )则无法使用该复合索引。如果经常需要根据『name字段』以及『name和age字段组合』来查询,则应该创建如下的复合索引:

db.person.createIndex( {name: 1, age: 1} )

除了查询的需求能够影响索引的顺序,字段的值分布也是一个重要的考量因素,即使person集合所有的查询都是『name和age字段组合』(指定特定的name和age),字段的顺序也是有影响的。

age字段的取值很有限,即拥有相同age字段的文档会有很多;而name字段的取值则丰富很多,拥有相同name字段的文档很少;显然先按name字段查找,再在相同name的文档里查找age字段更为高效。

多key索引 (Multikey Index)

当索引的字段为数组时,创建出的索引称为多key索引,多key索引会为数组的每个元素建立一条索引,比如person表加入一个habbit字段(数组)用于描述兴趣爱好,需要查询有相同兴趣爱好的人就可以利用habbit字段的多key索引。

{"name" : "jack", "age" : 19, habbit: ["football, runnning"]}
db.person.createIndex( {habbit: 1} )  // 自动创建多key索引
db.person.find( {habbit: "football"} )

其他类型索引

哈希索引(Hashed Index)是指按照某个字段的hash值来建立索引,目前主要用于MongoDB Sharded Cluster的Hash分片,hash索引只能满足字段完全匹配的查询,不能满足范围查询等。

地理位置索引(Geospatial Index)能很好的解决O2O的应用场景,比如『查找附近的美食』、『查找某个区域内的车站』等。

文本索引(Text Index)能解决快速文本查找的需求,比如有一个博客文章集合,需要根据博客的内容来快速查找,则可以针对博客内容建立文本索引。

索引额外属性

MongoDB除了支持多种不同类型的索引,还能对索引定制一些特殊的属性。

·唯一索引 (unique index):保证索引对应的字段不会出现相同的值,比如_id索引就是唯一索引。

·TTL索引:可以针对某个时间字段,指定文档的过期时间(经过指定时间后过期 或 在某个时间点过期)。

·部分索引 (partial index): 只针对符合某个特定条件的文档建立索引,3.2版本才支持该特性。

·稀疏索引(sparse index): 只针对存在索引字段的文档建立索引,可看做是部分索引的一种特殊情况。

python学习网,大量的免费MongoDB入门教程,欢迎在线学习!

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

东北娘们国语版免费播放| 男生困困进女生困困洞视频| 芒果浏览器| 小蜜桃免费观看高清电视剧| 7W7W77777的中文意思| 结核菌素| X姓女RAPPER的首次亮相| 老公装醉看我和别人在一起| 豆传媒剧国产MV有什么特点| 扒开腿让我躁你很舒服的导演是谁| 离婚女人的周末| 家族轮换之共乐的日子最新章节更, | 妻子的姐姐免费观看大全电视剧| BUBBLE| 蜜桃成熟时| 18禁男男腐啪GV真人视频| 八卦图解| 女子排尿视频大全| 小洞流口水了 是不是饿了| 男人碰到紧的会念念不忘吗?| 妈妈出轨了免费观看电视剧全集| 公交车被上高湖了还能坐吗小说| 美女两个球球抖动抓球球视频| 荫蒂被三个男人添| 情满四合院| 在婚房被伴郎C了2个小时的后果 | 国产69精品久久久久久A片| 胸大美女| 真人刺激战场40分钟电视剧| 欧美黑粗大硬巴XXOO| 成全二人世界免费观看电视剧| 女性三角毛毛区有片毛掉光正常吗| 7777777亚洲和欧洲尺码表| 真爱禁区电视剧免费观看全集| 罪恶之城2| YSL千人千色T9T9T9T9...| 粗大的内捧猛烈进出校花H漫画小| 男生把困困放到女生坤坤视频高清| 三人互换麦子| 成品PPT网站大片入口| 星空传媒天美传媒有限公司