全文索引

建立方法:
--在articles集合的key字段上创建全文索引
db.articles.ensureIndex({key:"text"})
--在articles集合的key_1,key_2字段上创建全文索引
db.articles.ensuereIndex({key_1:"text",key_2:"text"})
--在articles集合的所有字段上创建全文索引
db.articles.ensuereIndex({"$**":"text"}) --在articles集合中的article字段上创建全文索引
> db.articles.ensureIndex({"article":"text"});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
>
--插入演示数据
db.articles.insert({"article":"aa bb"})
db.articles.insert({"article":"aa bb cc "})
db.articles.insert({"article":"aa bb cc dd"})
db.articles.insert({"article":"aa bb cc rr"}) 使用全文索引查询
--查询包含aa 或 bb 或 cc的文档
db.articles.find({$text:{$search:"aa bb cc"}})
--查询包含aa 或 bb 但不包含 cc的文档
db.articles.find({$text:{$search:"aa bb -cc"}})
--查询包含aa 、bb 且包含cc的文档
db.articles.find({$text:{$search:"\"aa\" \"bb\" \"cc\""}}) 全文索引的相似度
$meta操作符:{score:{$meta:"textScore"}}
写在查询条件后面可以返回查询结果的相似度
经常与sort一起使用 --查询含有"aa bb"字段的文本,并返回查询结果的相似度
> db.articles.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}});
{ "_id" : ObjectId("5798ad223206da9bc38b2370"), "article" : "aa bb cc dd", "score" : 1.25 }
{ "_id" : ObjectId("5798ad293206da9bc38b2371"), "article" : "aa bb cc rr", "score" : 1.25 }
{ "_id" : ObjectId("5798ad1b3206da9bc38b236f"), "article" : "aa bb cc ", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5798ad143206da9bc38b236e"), "article" : "aa bb", "score" : 1.5 }
{ "_id" : ObjectId("5798ae383206da9bc38b2372"), "article" : "aa", "score" : 1.1 }
--根据相似度排序
> db.articles.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}});
{ "_id" : ObjectId("5798ad143206da9bc38b236e"), "article" : "aa bb", "score" : 1.5 }
{ "_id" : ObjectId("5798ad1b3206da9bc38b236f"), "article" : "aa bb cc ", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5798ad223206da9bc38b2370"), "article" : "aa bb cc dd", "score" : 1.25 }
{ "_id" : ObjectId("5798ad293206da9bc38b2371"), "article" : "aa bb cc rr", "score" : 1.25 }
{ "_id" : ObjectId("5798ae383206da9bc38b2372"), "article" : "aa", "score" : 1.1 }
> 全文索引使用的限制(版本2.6.5)
1.每次查询,只能指定一个$text查询(一个集合只能创建一个全文索引)
2.$text查询不能出现在$nor查询中
3.查询中如果包含$text,hint不在起作用
4.当前Mongodb的全文索引还不支持中文

索引属性

创建索引的格式:
db.collection.ensureIndex({indexValue},{indexProperty})
其中indexProperty比较重要的有:
1.名字,name指定:
db.collection.ensureIndex({},{name:""})
2.唯一性,unique指定:
db.collection.ensureIndex({},{unique:true/false})
3.稀疏性,sparse指定
稀疏性指是否为文档中不存在的字段创建索引
db.collection.ensureIndex({},{sparse:true/false})
4.是否定时删除,expireAfterSeconds指定:
TTL 过期索引

地理位置索引

地理位置索引
将一些点的位置存储到Mongodb中,创建索引后,可以按照位置来
查找其他点 子分类
2d索引:用于存储和查找平面上的点
2dsphere索引:用于存储和查找球面上的点 查找方式
1.查找距离某个点一定距离内的点
2.查找包含在某区域内的点 2d索引详解
1.创建索引方式
db.collection.ensureIndex({w:"2d"}) 2.位置表示方式
经纬度[经度,纬度] 3.取值范围
经度[-180,180] 纬度[-90,90] 4.插入位置数据
>db.location.insert({w:[1,1]})
>db.location.insert({w:[1,2]})
>db.location.insert({w:[5,6]})
>db.location.insert({w:[200,1]}) #Mongodb会直接报错,经度超出范围
>db.location.insert({w:[180,100]}) #纬度超出范围,Mongodb并没有报错,但是后期查询会出现不可预知的错误。
>db.location.insert({w:[79,76]}) 5.查询方式
$near查询 查询距离某个点的最近点
>db.location.find({w:{$near:[1,1]}}) #默认返回100个
--可通过$maxDistance来限制查找的最远距离
>db.location.find({w:{$near:[1,1],$maxDistance:10}}) #限制查找最远距离为10 $geoWithin查询 查询某个形状内的点
形状有三种表示方式
1)$box:矩形,使用{$box:[[<x1>,<y1>],[<x2>,<y2>]]}表示,内部是两个坐标,第一个代表左边界,第二个代表右边界。
>db.collection.find({w:{$geoWithin:{$box:[[0,0],[3,3]]}}})
2)$center:圆形,使用{$center:[[<x1>,<y1>],r]}表示,内部是圆心位置和半径。
>db.collection.find({w:{$geoWithin:{$center:[[0,0],5]}}})
3)$polygon:多边形,使用{$polygon:[[<x1>,<y1>],[<x2>,<y2>],[<x3>,<y3>]]}表示,内部是坐标点,坐标点围成一个多边形。
>db.collection.find({w:{$geoWithin:{$polygon:[[0,0],[0,1],[2,5],[6,1]]}}}) geoNear查询 是对$near查询的补充
db.runCommand({
getNear:<collection>,
near:[x,y],
minDistance:(对2d索引无效)
maxDistance:
num:
})

Mongodb的索引--学习笔记(未完)的更多相关文章

  1. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  2. linux学习笔记---未完待续,缓慢更新

    做为linux菜鸟,由于work的需要,慢慢的开始接触学习linux. <鸟哥的linux私房菜>学习笔记. 一.基础命令操作 1.显示日期的命令 date 执行date命令后,显示结果为 ...

  3. jQuery 学习笔记(未完待续)

    一.jQuery概述    宗旨: Write Less, Do More.    基础知识:        1.符号$代替document.getElementById()函数        2.使 ...

  4. oracle-绑定变量学习笔记(未完待续)

    --定义变量SQL> var a number; --给绑定变量赋值SQL> exec :a :=123; PL/SQL procedure successfully completed. ...

  5. sql语句学习及索引学习,未完待续,补充增删改查

    1,查询出last_name 为 'Chen' 的 manager 的信息.  select * fromwhere employee_id = ( selectfrom employees wher ...

  6. Scrapy 爬虫框架学习笔记(未完,持续更新)

    Scrapy 爬虫框架 Scrapy 是一个用 Python 写的 Crawler Framework .它使用 Twisted 这个异步网络库来处理网络通信. Scrapy 框架的主要架构 根据它官 ...

  7. Java学习笔记(未完待续)

    变量的作用域(scope)是指变量可以在程序中引用的范围.在方法中定义的变量称为局部变量(local variable).局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止.局部变量都必 ...

  8. Greys学习笔记(未完待续)

    Greys介绍 greys-anatomy是一个Java线上诊断工具,取名来自美剧<实习医生格雷>,由菜鸟-杜琨同学开发维护.比我们常用的脚本工具btrace提供更多的功能,greys采用 ...

  9. mongodb常用命令学习笔记

    mongodb常用命令学习笔记 创建数据库 use DATABASE_NAME eg: use users; 如果数据库不存在,则创建数据库,否则切换到指定数据库.要显示刚刚创建的数据库,需要向数据库 ...

随机推荐

  1. Arch yaourt 安装

    安装yaourt,最简单安装Yaourt的方式是添加Yaourt源至您的 /etc/pacman.conf:[archlinuxcn]#The Chinese Arch Linux communiti ...

  2. Redis单机版安装与部署

    Redis官网:http://redis.io 下载Redis wget https://github.com/antirez/redis/archive/3.0.0-rc1.tar.gz 解压并安装 ...

  3. 关闭linux下的使用的端口

    lsof -P -n -i kill pid 另外防火墙 iptables之类的也可以关闭端口

  4. android 开发进阶 自定义控件-仿ios自动清除控件

    先上图: 开发中经常需要自定义view控件或者组合控件,某些控件可能需要一些额外的配置.比如自定义一个标题栏,你可能需要根据不同尺寸的手机定制不同长度的标题栏,或者更常见的你需要配置标题栏的背景,这时 ...

  5. 哪项技术可以用在WEB开发中实现会话跟踪实现?

    HTTP是“无状态”协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息.即使那些支持持续性 HTTP 连接的服务器,尽管多个客户请求连 ...

  6. Orchard官方文档翻译(二) 安装 Orchard

    原文地址:http://docs.orchardproject.net/Documentation/Installing-Orchard 想要查看文档目录请用力点击这里 最近想要学习了解orchard ...

  7. 云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)

    云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什 ...

  8. Are Landing Pages Killing Your Conversion Rate?

    http://searchenginewatch.com/sew/how-to/2411253/are-landing-pages-killing-your-conversion-rate

  9. oracle 闪回技术

    oracle默认不启动闪回数据库 如果需要启动闪回数据库,数据库需要设置为归档模式,并启用恢复区. 1.查看是否启动闪回删除 SQL> show parameter recyclebin; NA ...

  10. cordova ios --->OC 调用 js (一)

    1.在HTML中定义一个函数如OCcallJS() function OCcallJS(){ alert("OC 调用js 的 方法"); } 2.当webview 加载完成的时候 ...