您的位置:首页 > 数据库 > Mongodb

mongodb-manual-3.0.1 Indexes

2015-05-28 15:29 399 查看
8.1

mongodb的索引定义在collections级别,并且支持索引到一个document,或这个document的子部分。

索引可以用来进行两个方向的排序。

Cover Results:

覆盖索引的好处有两方向:

1.可以直接通过索引返回数据,不用再看别的地方。

2.不用把document拿入内存

Compound Index(复合索引)

复合索引的顺序非常重要,如果索引是{ userid:1 ,score : -1},那么索引是顺序首先是按userid排列,在每一个userid中,score按下降顺序排列。

multikey indexes

为了索引到一个包括数组的域,mongodb给数组中的每个成员都添加了一个索引项。multikey索引可以让mongodb使用数组的值返回document.mongodb会自己决定应不应该创建multikey。 multikey索引支持的数组的数据类型为:string,numbers和内嵌document

{

userid: "xyz",

addr:

[

{zip : "10036", ...},

{zip: "94301", ...}

],

}

{“addr.zip” : 1 }index

8.1.3 index properties

1.唯一性索引

2.稀疏索引:只包含加入索引的field.

3.TTL索引:可以让系统自动删除一些文档

8.1.4 index intersection

mongodb可以交互使用多个索引完成语句。

8.2.1

Behavior of Indexes

在mongodb中所有索引都是B-tree,可以高效的支持精确查询和范围查询。

索引在内部是顺序存储的,它的顺序是加了这个索引的域的顺序。

Ordering of Indexes

mongodb索引的排序可能是上升的也可能是下降的。尽管索引是有序的,但是mongodb遍历索引时,有时是顺序的有时是逆序的。

但是组合索引的顺序非常重要。

在local database 中的capped collection没有objectID

可以在内嵌域中创建索引,内嵌域中的索引不同于内嵌document的索引.

内嵌document索引将会把document的全部内容都装进索引中,直到超过索引的最大尺寸。

当要查询内嵌document时,field的顺序非常重要,必须完全匹配:

{

_id:ObjectId(...),

metro:{

city:"New York",

state:"NY"

},

name:"Giant Factory"

}

db.factories.find( { metro:{ city:"New
York", state:"NY"
} } )

db.factories.find( { metro:{
state:"NY", city:"New
York" } } )

上面两个查询只有第一个能查询到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: