①地理信息索引

地理信息索引分为两类: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. 微信小程序 循环列表添加点击事件和样式

    如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使 ...

  2. 瑞波Ripple-OnlineDeletion配置的理解

    1.概要 如果没有设置online deletion,那么Rippled Server的本地数据库大小将会无限增长.为了释放磁盘空间,那种情况应该被制止并且那些数据库文件应该被手动删除.online ...

  3. ABP框架使用Swagger

    参考文档:https://www.cnblogs.com/xcsn/p/7910890.html 步骤1:Nuget安装Swashbuckle到*.WebApi项目 步骤2:在*.WebApi> ...

  4. CSS学习总结2:CSS框模型

    1.CSS框模型概述 CSS框模型规定了元素框处理元素内容.内边框.边框和外边框的方式. 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外 ...

  5. C++中强制类型转换

    C++强制类型转换 C++中的强制类型转换虽然兼容C语言中的强制类型转换.但是并不建议在C++中使用C语言风格的强制类型转换.C++中的强制类型转换共有4个关键字分别是:static_cast,con ...

  6. 解决loadrunner录制页面的乱码问题

    以下亲自验证了的:好用.     三步解决loadrunner录制页面的乱码问题 第一步:去lr 的vugen的Tools -> Recoding Options -> Advanced ...

  7. Linux产生序列数字

    {起始数字..结束数字}    //  注意 起始数字和结束数字都包括在内 中间没有空格

  8. divinglaravel.com

    https://divinglaravel.com/ 这是一个深入 laravel 的学习网站

  9. How to convert a PDF file to JPEGs using PHP

    Hey, Today I would like to show you how we can convert PDF to JPEG using imagick extension. Imagick ...

  10. Netty 源码 Channel(二)主要类

    Netty 源码 Channel(二)主要类 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) 一.Channel 类图 二. ...