①地理信息索引

地理信息索引分为两类:2D平面索引,另外就是2DSphere球面索引。在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标。

范例:定义一个商铺的集合

db.shop.insert(lloc[10,10]);

db.shop.insert(lloc[10,11]);

db.shop.insert(lloc[11,10]);

db.shop.insert(lloc[12,15]);

db.shop.insert(lloc[16,17]);

db.shop.insert(lloc[90,90]);

db.shop.insert(lloc[120,130]);

②范例:为shop的集合定义2D索引

db.students.ensureIndex({"loc":"2d"});

这个时候shop集合就可以实现坐标位置的查询了,而要进行查询有两种查询方式:

·“$near”查询,查询距离某个点最近的坐标点;

·“$geoWithin”查询:查询某个形状内的点;

 
③范例:假设我的现在的坐标是:[11,11]
db.shop.find({loc:{"$near":[11,11]}});
但是如果执行了以上的查询,实际上会将数据集合里面的前100个点的信息都返回来了,可是太远了,设置一个距离范围—— 5个点内的。
④范例:设置查询距离范围
db.shop.find({loc:{"$near":[11,11]},"$maxDistance":5});

但是需要注意一点,在2D索引里面虽然支持最大距离,但是不支持最小距离。

但是也可以设置一个查询的范围,使用“$geoWithin”查询,而可以设置的范围:

·矩形范围($box):{"$box":[[x1,y1],[x2,y2]]};

·圆形范围($center):{"$center" : [[x1,y1],r]};

·多边型($polygon):{"$polygon" :[[x1,y1],[x2,y2][x3,y3] , ...]}

⑤范例:查询矩形
db.shop.find({loc:{"$geoWithin":{"$box":[9,9],[11,11]}}});
 
⑥范例:查询圆形
db.shop.find({loc:{"$geoWithin":{"$center":[11,11],2}}});
⑦范例:利用runCommand()实现信息查询
在MongoDB数据库里面,除了一些支持的操作函数之外,还有一个重要的命令:runCommand(),这个函数可以执行所有的特定的MongoDB命令。
db.runCommand({"geoNear":"shop",near:[10,10],maxDistance:5,num:2});
 
 
 
 
 
 
 
 
 
 
 
 
 

第30章:MongoDB-索引--地理信息索引的更多相关文章

  1. MongoDB(课时25 地理信息索引)

    3.6.4 地理信息索引 地理信息索引分为两类:2D平面索引,2DSphere球面索引.在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标. 范例:定义一个shop的集合 db. ...

  2. MongoDB 学习五:索引

    这章我们介绍MongoDB的索引,用来优化查询. 索引介绍 数据库索引有些类似书的目录. 一个查询如果没有使用索引被称为表扫描,意思是它必须像阅读整本书那样去获取一个查询结果.一般来说,我们应尽量避免 ...

  3. MongoDB学习笔记~索引提高查询效率

    回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoD ...

  4. MongoDB学习笔记(索引)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  5. MongoDB的学习--索引类型和属性

    索引类型 MongDB的索引分为以下几种类型:单键索引.复合索引.多键索引.地理空间索引.全文本索引和哈希索引 单键索引(Single Field Indexes) 在一个键上创建的索引就是单键索引, ...

  6. MongoDB的学习--索引

    索引可以用来优化查询,而且在某些特定类型的查询中,索引是必不可少的.为集合选择合适的索引是提高性能的关键. 先来mock数据 for (i = 0; i < 1000000; i++) { db ...

  7. MongoDB学习笔记(索引)(转)

    一.索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({" ...

  8. MongoDB学习笔记——索引管理

    索引 索引能够提升查询的效率.没有索引,MongoDB必须扫描集合中的所有文档,才能找到匹配查询语句的文档. 索引是一种特殊的数据结构,将一小块数据集保存为容易遍历的形式.索引能够存储某种特殊字段或字 ...

  9. mongodb的地理位置索引

    mongoDB支持二维空间索引,使用空间索引,mongoDB支持一种特殊查询,如某地图网站上可以查找离你最近的咖啡厅,银行等信息.这个使用mongoDB的空间索引结合特殊的查询方法很容易实现.前提条件 ...

随机推荐

  1. 关于viewport我自己的理解

    其实即使不在html中添加meta viewport标签,每个移动端浏览器都会有一个默认的viewport,只是这个viewport的宽度是980,然后做1:3或者1:2的自动缩放.所以当不在html ...

  2. Specified key was too long; max key length is 767 bytes

    MySQL) )); Database changed ERROR (): Specified bytes drop table if exists test; ) primary key)chars ...

  3. cgi,fast-cgi,php-cgi,php-fpm转载详解

    转载自:https://segmentfault.com/q/1010000000256516 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编 ...

  4. ubuntu下安装nginx1.11.10

    (本页仅作为个人笔记参考) 为openssl,zlib,pcre配置编译 wget http://om88fxbu9.bkt.clouddn.com/package/nginx/nginx-1.11. ...

  5. Bootstrap(5)栅格系统

    一.移动设备优先 在 HTML5 的项目中,我们做了移动端的项目.它有一份非常重要的 meta,用于设置屏幕和设备等宽以及是否运行用户缩放,及缩放比例的问题. //分别为:屏幕宽度和设备一致.初始缩放 ...

  6. Centos 7.0 Firewall-cmd 使用方式

    开启端口命令 输入firewall-cmd --query-port=6379/tcp,如果返回结果为no,那么证明6379端口确实没有开启.输入firewall-cmd --add-port=637 ...

  7. Oracle_高级功能(4) 数据库存储结构

    数据库存储结构分为:物理存储结构和逻辑存储结构.物理结构和逻辑结构分开,对物理数据的存储不会影响对逻辑结构的访问.1.物理存储结构 数据库文件 os block2.逻辑存储结构 tablespace ...

  8. C# 判断ip地址是否正确

    最后要用一方法判断ip地址是否正确,直接用.Net现成的类,方法如下: string ipStr="192.168.222.333"; IPAddress ip; if(IPAdd ...

  9. PAT 1009 说反话 (20)(代码)

    1009 说反话 (20)(20 分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空 ...

  10. Mybatlis SQL 注入与防范

    SQL注射原理 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令 ...