如何基于mongodb来实现用户当前位置距离显示顺序功能

首页 > questions Tags : mongod 更新日期: 2015-08-02

有商店的地理位置坐标信息在mongodb保存,能否按离用户的距离由小到大来排序显示?就是用户周边信息按距离排序的功能

9

MongoDB有2D空间索引,做这种应用很方便。https://foursquare.com/ 目前用的就是MongoDB做的LBS服务。

简单如下:

# 插入数据 lng对应经度  lat对应纬度 均为float型
db.collection.insert({location:[lng,lat],title:'test title'})
# 创建2D空间索引
# 2dsphere支持球面检索  2d二维空间搜索
db.collection.ensureIndex({location:'2dsphere'})
# 按照半径搜索 搜索半径内的所有的点 按照由近到远排序
db.collection.find(
    {
        location:
        {
            $geoWithin:
            {
                $centerSphere: [ [lng, lat], 检索半径]
            }
        }
    }
)
# 搜索全部数据 按照由近到远排序
db.collection.find(
    {
        location:
        {
            $near:
            [lng, lat]
        }
    }
)

搜索出的结果已经是由远到近排序了,如果需要输出距离计算。$geoNear搜索返回的数据中已有distance(距离),不过不支持其他命令,如limit

MongoDB官方文档:http://docs.mongodb.org/manual/applications/geospatial-indexes/

相关问题参考:http://segmentfault.com/q/1010000000345194

9

mongodb的排序功能较弱,做不了这么复杂的查询。
你的这种使用场景,理论上来说用couchdb的view来做最简单。

9

据说[geohash]:http://en.wikipedia.org/wiki/Geohash 是这种找附近用的比较多的方案,好像版本号新一点的mongodb有这种空间分析的功能,具体的没仔细看文档。


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • 基于mAppWidget实现手绘地图(十二)显示当前用户位置
      若显示当前用户位置,你需要执行以下步骤:   添加ACCESS_COARSE_LOCATION 和ACCESS_FINE_LOCATION权限AndroidManifest.xml     用mapWidget.setShowMyPosition(true)来显示当前用户的位置   得出的结果是,你应该看到地图上的位置标记:        如何改变位置指 ...
  • 基于mongoDB和C#分布式海量文件存储实例
    本文章介绍一下关于基于mongoDB和C#分布式海量文件存储实例 ,有需要了解的朋友可以参考一下.1.单机小文件的存储,逐步增加上传文件的大小,观察mongoDB中文件对磁盘分配大小的变化.2.采用分片的方式存储大量的数据实验一:首先建立一个数据库gywdb,上传一个574.5kB大小的文件,代码如下: 代码如下 View Code using System ...
  • 基于google地图记录用户旅游轨迹
    基于google地图记录用户旅游轨迹
    在参加飞跃马拉松的时候,小组的项目构思是基于移动社交网络做一个记录用户旅游轨迹和照片的APP应用.即当用户在旅游过程中,手机会不间断的上报GPS坐标到服务器,服务器会保存所有坐标到数据库,然后用户打开自己的旅游记录后,我们会在手机上创建一个全屏的地图,通过服务器CGI获取所有GPS的坐标点,然后通过这些坐标点绘制出一条线.同时,我们还可以在地图上打上一些锚点 ...
  • GridFS:基于MongoDB的分布式文件存储系统
    GridFS:基于MongoDB的分布式文件存储系统
    GridFS是MongoDB之上的分布式文件系统,其利用了MongoDB的分布式存储机制并通过MongoDB来存储文件数据和文件元数据,兼具文档型数据库和文件系统的优势.GridFS是当前大数据潮流和复杂数据分析需求的产物. 简单来说,GridFS通过将文件数据和文件元数据保存在MongoDB里来实现文件系统,通过复制(Replication)来应对故障切换 ...
  • Appboy 基于 MongoDB 的数据密集型实践
    Appboy 基于 MongoDB 的数据密集型实践
    摘要:Appboy 正在过手机等新兴渠道尝试一种新的方法,让机构可以与顾客建立更好的关系,可以说是市场自动化产业的一个前沿探索者.在移动端探索上,该公司已经取得了一定的成功,知名产品有 iHeartMedia.PicsArt.Etsy 等. [编者按]本文摘录自 Appboy 联合创始人兼 CIO Jon Hyman 在 MongoDB World 2015 ...
猜你喜欢