加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MongoDB实现地理位置查询

发布时间:2020-12-13 12:42:30 所属栏目:百科 来源:网络整理
导读:《MongoDB实现地理位置查询》要点: 本文介绍了MongoDB实现地理位置查询,希望对您有用。如果有疑问,可以联系我们。 欢迎参与《MongoDB实现地理位置查询》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 MongoDB 是一个基于分布式文件存储的数据库

《MongoDB实现地理位置查询》要点:
本文介绍了MongoDB实现地理位置查询,希望对您有用。如果有疑问,可以联系我们。

欢迎参与《MongoDB实现地理位置查询》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

MongoDB实现地理位置查询

MongoDB 是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.

本文主要是在实际项目中碰到地理位置查询时的学习记录.

MongoDB地理位置查询文档https://docs.mongodb.com/manual/reference/operator/query-geospatial

MongoDB支持地理位置索引,可以直接用于位置距离计算和查询.查询结果默认将会由近到远排序,且查询结果也包含目标点对象、距离目标点的距离等信息.

geoNear是MongoDB原生支持的查询函数,所以性能上也做到了高度的优化,完全可以应付生产环境的压力.

https://docs.mongodb.com/manual/reference/command/geoNear/

两种索引方式

2d index:

使用2d index 能够将数据作为2维平面上的点存储起来,在MongoDB 2.2以前推荐使用2d index索引.

2dsphere index:

2dsphere index 支持球体的查询和计算,同时它支持数据存储为GeoJSON 和传统坐标.

3种距离单位

米(meters)

平面单位(flat units,可以理解为经纬度的“一度”)

弧度(radians)

2d索引能同时支持$center和$centerSphere,

2dsphere索引支持$centerSphere.

$center默认是度,$centerSphere默认距离是弧度

样例代码

//MongoDB 实现lbs查询

/***************************

首先需对col里的loc设置索引为'2d',方可进行$near查询

db.col.ensureIndex({'loc':'2d'})

db.col.getIndexes()

****************************/

// maxDistance单位是弧度,地球表面1弧度距离约为6378137米,0.001弧度距离为6378米

db.col.find({"loc": {$near: [longtitude,lattitude],$maxDistance:0.1}})

样例代码

db.user.find({"geo": {$near: [118.10388605,24.48923061],$maxDistance:0.1}},{id:1,name:1,state:1,geo:1}).limit(1).pretty()

MongoDB实现地理位置查询

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读