MongDB 索引

创建索引,命令:ensureIndex
1:创建索引时,1表示按升序存储,-1表示按降序存储
2:可以给索引指定名字,创建的时候指定 name 即可
3:可以创建复合索引,如果想用到复合索引,必须在查询条件中包含复合索引中的前N个索引列
4:如果查询条件中的键值顺序和复合索引中的创建顺序不一致的话,MongoDB可以智能的帮助我们调整该顺序,以便使复合索引可以为查询所用
5:可以为内嵌文档创建索引,其规则和普通文档创建索引是一样的
6:一次查询中只能使用一个索引,$or特殊,可以在每个分支条件上使用一个索引
7:如果查询要在内存中排序的话,结果集不能超过32M
8:$where,$exists不能使用索引,还有一些低效率的操作符,比如:$ne,$not,$nin等
9:设计多个字段的索引时,应该尽量将用于精确匹配的字段放在索引的前面

10:MongoDB限制每个集合上最多只能有64个索引,建议在一个特定的集合上,不要设置多个索引。

11:如果要在后台运行创建索引,添加 {background:true}



查看已经创建的索引,命令:getIndexes
删除索引,命令:dropIndex

查看查询语句解释,命令:explain

 explain的字段说明:
1:cursor:本次查询使用的索引
2:isMultiKey:是否使用了多键索引
3:n:返回的文档数量
4:nscannedObjects:按照索引指针去磁盘查找实际文档的次数
5:nscanned:如果使用索引,就是查找过的索引条目数量;如果全表扫描,就是查找过的文档数量
6:scanAndOrder:是否在内存中对结果集排序
7:indexOnly:是否只是用索引就能完成本次查询
8:nYields:为了让写入请求能顺利执行,本次查询暂停的次数
9:millis:本次查询所耗费的时间,单位是毫秒
10:indexBounds:描述索引的使用情况,给出了索引的遍历范围

指定使用的索引:hint

在ensureIndex的第二个参数中使用

指定不使用索引,强制全表扫描:查询.hint({$natural:1});

唯一索引:在创建的时候,指定{“unique”:true}
1:唯一索引将会保证该字段的数据不会重复,如果重复插入,只会保存一条
2:索引能保存的数据值必须小于1024字节,这意味着超长的数据,不会保存到索引里,因此也就可以插入多个重复的数据了
3:复合索引也可以创建为唯一索引
4:在已有集合上创建唯一索引可能会失败,因为已经有了重复数据,此时可以指定
dropDups来强制去重,但由于保留数据的不可控,因此对重要数据不建议使用

5:唯一索引会把null看作值,所以无法将多个缺少唯一索引的数据插入,这时可以指定sparse来创建一个稀疏索引,如:{“unique”:true,”sparse”:true}


索引的集合
所有索引信息都保存在system.indexes集合众,这是一个保留集合,不能在其中进行插入或删除文档,可以通过查询集合或者使用getIndexes来查看。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值