MongoDB索引
Posted Rand Tsui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB索引相关的知识,希望对你有一定的参考价值。
首先有个问题必须搞明白:为什么添加索引能加快查找速度。
答案:如果没有索引,那么查找就要遍历所有记录并进行对比,如果有索引,就可以直接根据字段值,找到对应的文档。索引的数据结构跟表的数据结构不一样,索引不是遍历查找,而是映射。
索引类型
_id 自带索引
这是MongoDB自带的,不做多余说明
Single Field 单个字段
这是最常规的索引,字段可以是整数类型,也可以是字符串类型(比如用户名)
注:一个Collection可以多次创建该索引,每次只有一个字段,用于单个字段的查询
db.collection('auths').createIndex( client_id: 1 , unique: true );
db.collection('auths').createIndex( username: 1 , unique: true );
difference-between-index-on-text-field-and-text-index
Compound Index 复合索引
"key1": 1, "key2": -1
注:一次创建多个字段,用于多个字段的查询
db.collection('auths').createIndex( client_id: 1, username: 1 , unique: true );
Multikey Index 多键索引
"key1.key2": 1
Geospatial Index 地理空间索引
为了支持对地理空间坐标数据的高效查询,MongoDB提供了两种特殊的索引:返回结果时使用平面几何的2d索引和使用球面几何返回结果的2dsphere索引。
Text Indexes 文本索引
MongoDB提供了一种文本索引类型,支持在集合中搜索字符串内容。这些文本索引并不存储特定于语言的停止词(例如“the”、“a”、“or”),而是将集合中的词作为词干,只存储根词。
一个字段含有多个单词,搜索其中一个单词就可能搜索到该document。非全文搜索。
注意:一个集合只能创建一个文本索引,但是一个文本索引可以包含多个字段。
Hashed Indexes 散列索引
为了支持基于哈希的分片,MongoDB提供了哈希索引类型,该类型索引字段值的哈希值。这些索引的值沿其范围的分布更加随机,但只支持相等匹配,不支持基于范围的查询。
一些操作:
//查看已有的索引
db.account.getIndexes()
//创建文本索引
db.account.createIndex(username: "text", mobile: "text")
以上是关于MongoDB索引的主要内容,如果未能解决你的问题,请参考以下文章