现在的位置: 首页 > 综合 > 正文

5.MongoDB中的索引。

2014年01月20日 ⁄ 综合 ⁄ 共 1403字 ⁄ 字号 评论关闭

写在前面

学过其他关系型数据库,比如MySQL啊,微软的MSSQL啊,oracle啊。我们知道,在数据库中索引是至关重要,它能加快我们查询数据的速度,数据库索引与书籍的索引类似,有了索引我们不需要一页一页的去翻整本书,只需查看索引,需要查找的内容在第几第几页。很快迅速的找到数据。数据库中也是一样的,在索引中找到条目后,就可以直接跳转到目标文档的位置。

1.增加索引

前面介绍过了,索引具有加速查询速度的功能,在高并发的软件设计中,是必不可少的,那么我们讨论的是MongoDB,如何在MongoDB中创建索引呢?也很容易。使用ensureIndex方法。

如:我想给username和id创建索引。可以这样:

>db.user.ensureIndex({"user_id":1,"name:1"}) //

这样就为user集合创建好了索引,非别是user_id 和name。值为1和 -1分别表示创建索引的方向,若索引就一个键,则方向不关紧要,单键索引有点像一个按字母排序组织的书籍索引,无乱从A--Z,还是从Z--A,显然都要从M开始找。

2.管理查看索引

可以用system.indexes这个集合来管理和查看索引。

> show collections
blog
foo
system.indexes  //这个集合就是来存储索引的。
user
>
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.blog", "name" : "_id_" } //"_id"是默认的组建
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.user", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.foo", "name" : "_id_" }
{ "v" : 1, "key" : { "user_id" : 1, "name" : 1 }, "ns" : "php.user", "name" : "user_id_1_name_1" }  //索引信息。

3.修改索引

当我们以前做的集合随着项目的深入,或许索引会发生变化。我们可以来修改索引。也是用ensureIndex( ).

比如上诉的user集合,我想修改成为age为索引。那么

> db.user.ensureIndex({"age":1},{"background":true}) //修改索引,加上background:true。因为数据量巨大,后台完成,可以给其他动作留有空间。
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.blog", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.user", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "php.foo", "name" : "_id_" }
{ "v" : 1, "key" : { "user_id" : 1, "name" : 1 }, "ns" : "php.user", "name" : "user_id_1_name_1" }
{ "v" : 1, "key" : { "age" : 1 }, "ns" : "php.user", "name" : "age_1", "background" : true } //加入新的索引,并在后台完成
>

4.删除索引

可以使用dropIndexes()来删除索引。

抱歉!评论已关闭.