Mongodb的索引

1. 简介


索引是为了加速查询。
如果没有索引,mongodb在查询时会做表扫描,如果集合很大时,这个查询会非常慢。
一般对创建查询时的键都建立索引。

为排序字段建立索引,如果对未建立索引的字段sort,mongodb会将所有的数据取到内存中来排序,
如果集合大到不能在内存中排序,则mongodb会报错。

2. mongodb创建索引


创建索引使用ensureIndex命令。
> db.people.ensureIndex({"username" : 1});
上面语句对people集合的username键做了索引。

3. 组合索引


对于组合查询或排序,建立组合索引。
> db.people.ensureIndex({"date" : -1, "username" : 1});
索引键的1或者-1,表示索引创建的顺序,1为升序, -1为倒序。
如果索引只有一个键,则方向无关紧要。

4. 内嵌文档建立索引


为blog集合的评论按照时间建立索引:
> db.blog.ensureIndex({"comments.date" : 1});

5. 唯一索引


唯一索引确保集合中的每个键都是唯一值。
> db.people.ensureIndex({"username" : 1}, {"uniqe" : true});
对已有的集合创建唯一索引时,有可能已经有重复值了,这样会创建索引失败。
dropDups会保留第一个文档,删除后面重复的值。
> db.people.ensureIndex({"username" : 1}, {"unique" : true, "dropDups" : true});

6. 查看建立的索引


索引放在system.indexes集合中。
> db.system.indexes.find();
可以查看索引的key, 名称,属于哪个集合。

7. 删除索引


通过索引的名称,使用dropIndexes可以删除索引。
索引名称通过system.indexes来查询。
> db.user.dropIndexes({"username_1" : 1});

地址: http://blog.csdn.net/yonggang7/article/details/28100855


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值