现在有一种查询变得越来越流行(尤其是移动设备):找到离当前位置最近的N个场所。 MongoDB专为平面坐标查询做了专门的索引,称为地理空间索引。

同样需要用ensureIndex创建,不过,参数是两个 "2d"

db.map.ensureIndex({"gps":"2d"})

gps键的值必须是某种形式的一对值:一个包含两个元素的数组或者包含两个键的内嵌文档,像这样

{"gps":[0,100]}

{"gps":{"x":-30,"y":30}}

还可以用min和max设定选项的最大值和最小值

现在我们可以查询

db.map.find({"gps":{"$near":[40,-73]}})

这会按照点(40,-73)由近及远的方式将map集合的所有文档都返回

不仅如此,还可以指定形状,比如矩形

db.map.find({"gps":{"$within":{"$box":[ [10,20],[15,30] ]}}})

$box是两个元素的数组,第一个元素指左下方,第二个指右上角。 还可以用它来找到园内的点

db.map.find({"gps":{"$within":{"$center":[[10,30],5],}}})

转载于:https://www.cnblogs.com/caohaifeng/p/5550735.html

MongoDB小结26 - 地理空间索引相关推荐

  1. MongoDB——索引类型之地理空间索引(Geospatial Index)

    目录 一.MongoDB官网地址 二.地理空间索引(Geospatial Index) 2.1.地理空间索引(Geospatial Index)的概述 2.2.地理空间索引(Geospatial In ...

  2. Mongodb地理空间索引

    1.索引: 建立索引既耗时也费力,还需要消耗很多资源.使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求.如果不包括background 这 ...

  3. geohash之2d 地理空间索引

    个人博客:https://suveng.github.io/blog/​​​​​​​ 2d 地理空间索引 概述 2D地理空间索引可以将文档与二维空间中的位置(例如地图上的点)相关联.MongoDB将位 ...

  4. MongoDB-JAVA-Driver 3.2版本常用代码全整理(4) - 地理空间索引

    MongoDB的3.x版本Java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别.例如用Document替换BasicDBObject.通过Builders类构建Bson替代直接输入$命令等 ...

  5. 地理空间索引:线段与多边形的GeoHash编码

    geohash简介文章参见 地理空间索引:GeoHash原理 优化线段的编码效率参见 地理空间索引:线段的GeoHash编码优化 在上一篇博客地理空间索引:GeoHash原理中,我们讨论了如何将一个经 ...

  6. 地理空间索引:GeoHash原理

    后续文章参见 地理空间索引:线段与多边形的GeoHash编码 地理空间索引:线段的GeoHash编码优化 1. 基于空间位置的服务 基于位置的服务型电商席卷而来,搭乘网约车去到目的地.搜索附近的餐馆酒 ...

  7. mongodb地理空间索引原理阅读摘要

    http://www.cnblogs.com/taoweiji/p/3710495.html 具体原理在上面 简单概述,(x,y)经纬度坐标,通过geohash的方式,通过N次方块四分割生成一个坐标码 ...

  8. mongodb小结(转)

    用了一阵子mongodb,作一些小结,作为将来的参考.按照以往的习惯,先作一个总览,然后再挑出一些自己比较关注的几个点,作为珠玑,加以串联阐述. mongodb由C++写就,其名字来自humongou ...

  9. 地理空间索引实现:z 曲线、希尔伯特曲线、四叉树, 最邻近几何特征查询、范围查询

    我的GIS/CS学习笔记:https://github.com/yunwei37/ZJU-CS-GIS-ClassNotes <一个浙江大学本科生的计算机.地理信息科学知识库 > 详细代码 ...

  10. MongoDB小结09 - update【定位修改器】

    如果要操作数组中的值,可以用值在数组中的位置当做参数来删除 db.user.update({"name":"codingwhy.com"},{"$se ...

最新文章

  1. Spring MVC入门示例教程--静态页面跳转
  2. 雷军1994年写的诗一样的代码,我把它运行起来了!
  3. python 数据分析排名_2018年上半年热门编程语言排行榜
  4. python用import xlwt出现红字_如何用python处理excel
  5. php记一笔在线记账管理系统源码
  6. 马踏棋盘python_马踏棋盘python实现
  7. 教育部认可公众号博主是自由职业,网友:公号被封算失业吗?
  8. day08 文件操作
  9. pip 安装 tensoflow
  10. 论文简述 | Line Flow Based SLAM
  11. ie浏览器框架不显示_Python 爬虫(四):Selenium 框架介绍与使用
  12. FineReport10.0功能说明
  13. HTTP和HTTPS的区别,SSL的握手过程,kotlin协程异常
  14. linux虚拟机+显卡驱动,ubuntu12.4优化android虚拟机和安装intel显卡驱动
  15. 第三十二章 三更雪压飞狐城(二之全)
  16. ROS1云课→20迷宫不惑之A*大法(一种虽古老但实用全局路径规划算法)
  17. 网站外链和反向链接的区别(怎么区分外链与反向链接)
  18. @Value的用法及(#{})与@Value(${})的区别
  19. python海龟绘图画玫瑰花_python学习(二)之turtle库绘图
  20. 广播风暴对比实验部署

热门文章

  1. docker安装gamit_ubuntun10.10中安装gamit 10.40
  2. testlink匹配mysql8_TestLink与RedMine连接部署说明
  3. java与c++比较
  4. 微控制器MCU四大平台你了解多少?(一)
  5. iphone圆点怎么弄出来_iPhone11 怎么开启小圆圈?苹果11怎么打开小圆点?
  6. 小结SpringMVC(二)
  7. phpMyAdmin源码配置过程
  8. ListView若干点
  9. Pandas系列(一)数据读取、数据结构Dataframe和Series
  10. error: #error regenerate this file with a newer version of protoc.