使用场景很多 ,不瞎比比了 ,直接上案例。

创建数据集合location:

db.location.insert({loc:[1,3]});
db.location.insert({loc:[3,4]});
db.location.insert({loc:[0,-3]});
db.location.insert({loc:[-6,2]});
db.location.insert({loc:{x:9,y:5}});
db.location.insert({loc:{lng:-9.2,lat:21.3}});

查看数据:

db.location.find()

注意:一定要建立2d索引,否则不能计算距离(我在这里掉坑了)

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

使用geoNear计算距离:

使用runCommand来执行geoNear命令。

db.runCommand({"geoNear":"location",   //指定要在那个数据集里查询“near” : [0,0]          //指点参与计算的目标点
})

默认会查询出前100条数据

db.runCommand({"geoNear":"location","near":[0,0]})
{"waitedMS" : NumberLong(0),         "results" : [{"dis" : 3,"obj" : {"_id" : ObjectId("57b313b9190404253628744e"),"loc" : [0,-3]}},{"dis" : 3.1622776601683795,"obj" : {"_id" : ObjectId("57b313b9190404253628744c"),"loc" : [1,3]}},{"dis" : 5,"obj" : {"_id" : ObjectId("57b313b9190404253628744d"),"loc" : [3,4]}},{"dis" : 6.324555320336759,"obj" : {"_id" : ObjectId("57b313b9190404253628744f"),"loc" : [-6,2]}},{"dis" : 10.295630140987,"obj" : {"_id" : ObjectId("57b313b91904042536287450"),"loc" : {"x" : 9,"y" : 5}}},{"dis" : 23.201939574095956,"obj" : {"_id" : ObjectId("57b313be1904042536287451"),"loc" : {"lng" : -9.2,"lat" : 21.3}}}],"stats" : {"nscanned" : 18,     //在数据库操作期间扫描的索引项的总数"objectsLoaded" : 6, //在数据库操作期间加载的数据项"avgDistance" : 8.497400449264683,"maxDistance" : 23.201939574095956,"time" : 1           //查询使用的时间 毫秒作单位},"ok" : 1
}

在数据集环境中使用geoNear命令:
使用聚合查询,通过管道机制,能够方便的对数据进行过滤和排序等

db.location.aggregate({$geoNear:{near:[10,2],distanceField:"distance"    //指定查询出来的距离数据的别名}
})

查询结果:

{ "_id" : ObjectId("57b313b91904042536287450"), "loc" : { "x" : 9, "y" : 5 }, "distance" : 3.1622776601683795 }
{ "_id" : ObjectId("57b313b9190404253628744d"), "loc" : [ 3, 4 ], "distance" : 7.280109889280518 }
{ "_id" : ObjectId("57b313b9190404253628744c"), "loc" : [ 1, 3 ], "distance" : 9.055385138137417 }
{ "_id" : ObjectId("57b313b9190404253628744e"), "loc" : [ 0, -3 ], "distance" : 11.180339887498949 }
{ "_id" : ObjectId("57b313b9190404253628744f"), "loc" : [ -6, 2 ], "distance" : 16 }
{ "_id" : ObjectId("57b313be1904042536287451"), "loc" : { "lng" : -9.2, "lat" : 21.3 }, "distance" : 27.223702907576
698 }

更多参数见$geoNear (aggregation)

另外 $geoWithin 可以计算某点与几何图行的距离

mongodb 计算坐标距离相关推荐

  1. mysql空间函数计算坐标距离

    有一张表,表中有每个人所在位置及经纬度,现在求表中所有人离指定经纬度的位置. DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` (`id` ...

  2. mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离

    摘要:mysql.sqlserver.oracle和php计算GPS经纬度坐标距离 mysql计算GPS经纬度距离DELIMITER $$ CREATEDEFINER=`root`@`localhos ...

  3. 根据经纬度坐标计算实际距离

    double  hypot( double  x,  double  y)  ... {       return sqrt(x * x + y * y); } double  distance( d ...

  4. mysql 计算gps坐标距离_mysql 下 计算 两点 经纬度 之间的距离(转)

    公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...

  5. Golang计算坐标之间的距离

    // GeoDistance 计算地理距离,依次为两个坐标的纬度.经度func GeoDistance(lng1 float64, lat1 float64, lng2 float64, lat2 f ...

  6. 高德地图获取坐标距离_利用java、js或mysql计算高德地图中两坐标之间的距离

    前言 因为工作的原因,最近在做与地图相关的应用,使用了高德地图,研究了下高德地图计算两坐标距离的方法,官网上提供的开发包中有相关的方法,但是我的产品中比较特殊,无法直接使用提供的方法,所以就自己封装了 ...

  7. 角度距离计算坐标公式

    已知角度和距离,计算坐标.公式是x1=x0+s·cosθ,y1=y0+s·sinθ,其中θ为方位角,s为距离. C语言函数cos()接受一个以弧度为单位的参数 ,并返回一个double类型的值. co ...

  8. 全站仪坐标计算机公式,全站仪测量坐标距离计算表格公式自动计算

    <全站仪测量坐标距离计算表格公式自动计算>由会员分享,可在线阅读,更多相关<全站仪测量坐标距离计算表格公式自动计算(2页珍藏版)>请在读根文库上搜索. 全站仪测量方位角距离计算 ...

  9. MySQL计算坐标点之间距离

    #计算两坐标点之间距离,单位米-- 经度相同,维度不同,结果大致相等 select st_distance_sphere(point(122.45,31.13), point(122.45, 31.9 ...

最新文章

  1. 【Paper】2021_Distributed Consensus Tracking of Networked Agent Systems Under Denial-of-Service Attack
  2. ribbon负载均衡@LoadBalanced
  3. “Usage of API documented as @since 1.8+”
  4. hadoop namenode管理元数据机制
  5. 《Head.First设计模式读书笔记》之设计原则一、二和三
  6. 消防信号总线原理_AFPM100/B消防设备电源监控系统在百色市人民医院消防设备电源监控系统的应用-安科瑞 华梅超...
  7. Security+ 学习笔记52 风险管理
  8. 删除下拉框只找23火星软件_用Rhino秀个火星榨汁机?
  9. 【优化算法】混合增强灰狼优化布谷鸟搜索算法(AGWOCS)【含Matlab源码 1331期】
  10. Vijos P1199核弹危机
  11. c++STL库最详细介绍(保姆级教学)
  12. echar图表titile,x轴,y轴样式
  13. 关于Element-ui中el-table在谷歌和360极速浏览器的兼容问题
  14. 信息安全文章搜索引擎技术原理
  15. 基于微信小程序Map标签及高德地图开源方法实现路径导航
  16. 2022-2028全球与中国儿童注意力缺陷和多动障碍市场现状及未来发展趋势
  17. 山东大学单片机原理与应用实验 4.1 按键声光报警实验
  18. gcc posix sjij for MSYS 9.2.1+
  19. 因为发现很多家长其实没有真的明白美音和英音的区别,所以写了这篇文章
  20. 模块化封装和组件化封装

热门文章

  1. 计算机毕业答辩开场白,论文答辩流程及开场白_论文答辩三分钟开场白
  2. 乒乓球十一分制比赛规则_乒乓球比赛11 分制规定
  3. Android定制争夺战 三大主流ROM横评
  4. as死机了怎么办_电脑老是莫名其妙地死机,怎么办?
  5. Symantec AntiVirus企业版联机客户机端卸载密码(转)
  6. python——CSV转Excel
  7. bdd java 界面测试_行为驱动:第一个BDD测试用例
  8. 计算机模拟仿真技术是什么,模拟仿真技术是什么
  9. 台达服务器显示ale02,台达伺服电机50问2012.pdf
  10. HTTP状态码汇总(常见)