mongo 文档 索引篇

mongo cyanprobe 8年前 (2017-05-03) 3867次浏览 已收录 2个评论

前言:

复合索引原理我要等看mongo指南,手册上看不太懂。

正文:

默认_id存在索引,内嵌域和内嵌文档皆可以创建索引。创建索引时,数据库读写操作会被阻塞,使用background选项后台创建索引,但shell实例会被阻塞。2.4以后可以并发进行后台索引创建。
复合索引:单项索引支持从2个方向读取索引,而复合索引索引方向决定了是否使用该索引。

db.events.createIndex( { "username" : 1, "date" : -1 } )//此索引将同时支持以下两种查询
db.events.find().sort( { username: 1, date: -1 } )//优先username升序其次date降序
db.events.find().sort( { username: -1, date: 1 } )
//但不支持这一种
db.events.find().sort( { username: 1, date: 1 } )

索引前缀:
mongo支持索引前缀,如此索引

{ "item": 1, "location": 1, "stock": 1 }

那么,以下索引将会被支持 包含item键,包含item键location,包含item键stock,同时包含此3者。
当单一键索引和compound索引同时存在时,若不使稀疏(sparse)或者唯一索引,单一索引可以直接省略。
复合多键索引:
仅支支持1数组,能够提供数组字段高效查询索引。如果基于数组创建那么mongo会自动创建多键索引。
文本索引:
一个集合只能存在一个文本索引,默认语言为英语。可设置关键字权重等。。。(全文关键字匹配功能)
2D索引: 暂不涉及
TTL索引

db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

索引策略: 复合索引支持以相等的匹配前缀来排序。不需要在内存中进行排序
 


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mongo 文档 索引篇
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 哇,更新了博客,说起来是学习笔记吧...
    神隐者2017-05-03 12:51 回复