频道栏目
首页 > 资讯 > DB2 > 正文

MongoDb索引使用介绍

17-10-05        来源:[db:作者]  
收藏   我要投稿

MongoDb索引

1._Id索引:默认索引

2.单键索引:例如一条记录:{x:1,y:2,z:3} ,语句db.collection.ensureIndex({x:1}),表示对x创建一个升序索引x:1后面的这个值1代表升序,-1代表降序。

3.多键索引:多键索引与单键索引创建形式相同,区别在于字段的值。值可能有多个记录,例如数组.{x:[1,2,3,4,5]}

4.复合索引:当我们的查询条件不止一个时,就需要建立复合索引。例如一条记录{x:1,y:2,z:3},语句db.collection.ensureIndex({x:1,y:1})

5.过期索引:在一段时间后会过期的索引,在索引过期后,相应的数据会被删除,这适合存储一些在一段时间过后会失效的数据,比如用户的登录信息,存储的日志等。例如插入一条记录db.collection.insert({time:new Date()})表示插入一条当前时间的数据,db.collection.ensureIndex({time:1},{expireAfterSeconds:10}),建立过期索引,time字段的数据在10后会被删除,但是这个10s不是确定的值,因为mongodb删除进程是一分钟检测一次,所以当设置的expireAfterSeconds小于一分钟时,其实还是会一分钟后再删除。

6.全文索引:对字符串与字符串数组创建全文可搜索的索引。适用于:{author:"",title:"",article:""},author表示作者,title表示标题,article表示内容。

例如:db.collection.ensureIndex({key:"text"}),类似于前面的单键索引,不同的是单键索引的key是字段名,value是1或者-1,而这里key和字段名相同,但是value就是固定的text这个字符串。

如果需要创建多个字段的全文索引,db.collection.ensureIndex({key_1:"text",key_2:"text"}),类似于前面的多键索引。

如果需要对所有的字段都创建索引,可以使用db.collection.ensureIndex({"$**":"text"}),表示对所有字段的值就进行索引。

提一句,全文索引只允许有一个,进行全文索引查询的时候的key就不用写了,key就是我们在索引中写的key。

使用全文索引进行查询: db.collection.find({$text:{$search:"aaa"}}),表示查询数据中包含aaa的数据,有多条数据就返回多条。

db.collection.find({$text:{$search:"aa bb cc dd"}}),表示查询数据中包含aa或者bb或者cc或者dd的数据,有多条数据就返回多条。这里的空格表示或。

db.collection.find({$text:{$search:"aa bb -cc"}}),表示查询数据中包含aa或者bb但不包含cc的数据,有多条就返回多条,这里的符号表示非。

db.collection.find({$text:{$search:"\"aa\" \"bb\" \"cc\""}}),表示查询的数据中包含aa与bb与cc,有多条就返回多条,这里的\"其实表示的就是",因为外面有一层",我们在里面使用"时就要加转义字符\,这里的引号表示与。

7.全文索引相似度:这个是针对于全文索引的,平常我们在百度搜索的时候就会对我们输入的关键字进行匹配,在mongodb的查询中mongodb已经帮我们考虑到这一点了。$meta操作符:{score:{$meta:"textScore"}},写在查询后面就可以返回查询结果的相似度,与sort一起使用,可以达到根据相似度排序的效果。

这里使用上面全文索引的第一个查询来做实例:db.colletion.find({$text:{$search:"aaa"}},score:{$meta:"textScore"}),这个查询的结果里面就会多一个相似度的字段。我们可以根据这个相似度进行排序。例如:db.collection.find($text:{$search:"aaa"},score:{$meta:"textScore"}).sort(score:{$meta:"textScore"}),这样我们就可以根据相似度进行排序了。

8.全文索引的使用限制: tip1.每次查询只能指定一个$text查询

tip2.$text查询不能出现在$nor查询中

tip3.查询中如果包含$text,hint将不再起作用

tip4.\\3.2版本之前全文索引不支持中文,3.2版本之后开始支持中文

相关TAG标签
上一篇:什么是数据库管理系统?数据库管理系统使用介绍
下一篇:Redis数据结构与对象的使用和介绍
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站