`
lzqustc
  • 浏览: 211040 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

MongoDB开发LBS应用

阅读更多

随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理。

关于LBS的详细介绍及通用的几个解决方案,可以参考:深入浅出Symfony2 - 结合MongoDB开发LBS应用

 

本文主要举例说明使用Perl语言 + MongoDB实现查找附近的人的实现方案。

涉及的官方API说明文档列表:

1、2dsphere Indexes

2、GeoJSON Objects

3、$geoNear (aggregation)

 

实现步骤如下:

1、建立数据库表geoperson,包含位置信息字段:loc (按照GeoJSON格式组织), 数据如下:

{

    "_id": "o15041420964119780063",

    "name": "stephen",

    "head_fid": "f15022500199301140308001",

    "loc": {

        "type": "Point",

        "coordinates": [

            119.29647,

            26.07421

        ]

    },

    "type": "geoperson",

    "province": "福建省"

}

 

2、建立2dsphere索引

my $mocl = mdb()->get_collection("geoperson")->ensure_index({loc=>"2dsphere"});

 

3、查找附近2.5公里的人

my $rad = 2500; # 查找范围 2.5公里

my $max_size = 20; # 最多返回20条匹配数据

my $longitude = 119.31647;  # 中心点坐标(经纬度)

my $latitude = 26.17421;

my $mocl = mdb()->get_collection("geoperson")->aggregate([

                    {

                        '$geoNear'=>{

                                'near'=> { type=>"Point", coordinates=>[$longitude, $latitude] }, # 也要采取GeoJSON格式

                                #'num'=> $max_size,#The default value is 100

                                'spherical'=>1, #Required if using a 2dsphere index.

                                # Specify the distance in meters if the specified point is GeoJSON

                                'maxDistance'=>$rad, # 单位是米

                                # The output field that contains the calculated distance.

                                'distanceField'=>"distance",

                       }

                   },

                   { '$match'=> { "name"=> "lily" } }  # 进一步过滤条件

                   { '$sort'=> { "ut"=> -1 } }  # 排序

         ]);

 

 

MongoDB原生支持地理位置索引,且高性能、支持复杂查询。

是不是很简单呀。

 

0
0
分享到:
评论

相关推荐

    LBS应用开发(Location-Aware Applications)

    ### LBS应用开发(Location-Aware Applications)核心知识点详解 #### 一、LBS概述与大图景 **1.1 LBS(Location-Based Services)基本概念** - **定义**: LBS指的是利用移动通信网络和地理位置信息提供的各类服务。...

    MongoDB北京2014 - MongoDB在快的打车关键业务中的应用 - 欧阳康

    ### MongoDB在北京2014大会中的应用案例——快的打车 #### 一、快的打车业务背景 快的打车成立于2012年5月,同年8月正式上线运营,短短两年多时间迅速崛起,成为中国领先的移动出行平台之一。至2014年9月,快的...

    MongoDB在视频行业的应用实践.pptx

    本文将深入探讨MongoDB在开发设计和运维管理中的具体应用,以及它如何适应视频业务的需求。 首先,咪咕视讯作为一家涵盖大屏、VR屏和小屏的多媒体娱乐公司,其产品矩阵包括咪视通、移动云VR和咪咕视频,拥有海量的...

    HTML5在LBS社区中的应用

    然而,Native App通常在性能、离线操作和访问设备硬件方面更具优势,对于需要高度优化用户体验和复杂交互的LBS应用,开发者可能需要权衡选择。 最后,HTML5 Web App的开发架构通常包括前端、后端和数据交互三个部分...

    基于Android平台与LBS地理位置服务的移动社交应用系统

    综上所述,基于Android平台与LBS地理位置服务的移动社交应用系统开发涉及的知识点广泛而深入,涵盖Android应用开发基础、地理位置服务、社交网络架构、服务器开发、数据安全和用户体验等多个方面。开发者需要不断...

    LBS^2 魔兽

    【标题】"LBS^2 魔兽" 指的可能是一个基于地理位置服务(Location-Based Services,简称LBS)的魔兽世界相关项目或应用。在这个上下文中,"LBS"通常指的是利用移动设备(如手机)的定位功能来提供与用户当前位置相关...

    LBS空间搜索架构的优化历程.1c18c6f0-7e53-11e6-831e-83ec0cef607e.pdf

    在业务初期,系统可能采用MongoDB作为LBS服务,因为它具备开发部署简单、原生支持空间索引、实时更新支持良好等优点,但随着业务规模的扩大,MongoDB的库级锁问题和查询性能下降成为明显的瓶颈。 MongoDB在处理大量...

    foursquare

    综上所述,foursquare源码的分析不仅能让我们了解LBS应用的基本架构,还能深入学习到社交网络的设计、推荐系统的工作原理、大数据处理以及前端优化等多个领域的技术知识。对于任何想要提升自己在移动应用开发领域...

    基于LBS的O2O电子商务网站源码

    综上所述,基于LBS的O2O电子商务网站源码是一个复杂而精细的系统工程,涵盖了LBS技术、O2O模式、Web开发、数据库设计等多个领域。理解并掌握这部分源码,对于开发者来说,不仅能提升技术能力,也能更好地理解和运用...

    Android应用源码----基于LBS的社交软件包括服务端 .zip

    【Android应用源码——基于LBS的社交软件包括服务端】是一个典型的移动开发项目,它展示了如何构建一个基于位置服务(LBS,Location-Based Services)的社交应用。在这个项目中,我们有两个主要部分:`monolog-web-...

    LBS^2 windows live

    【描述】提到"LBS^2 windows live"可能是指一个基于Windows Live平台的LBS应用或服务。这个项目可能旨在为用户提供基于地理位置的个性化信息,比如天气预报、周边商家信息、导航服务等。结合Windows Live的特性,它...

    LBS^2 childhood

    【标题】"LBS^2 childhood" 暗示了一个可能与地理位置服务(Location-Based Services)和儿童相关的项目或应用。在IT行业中,LBS通常指的是利用移动设备、无线网络和GPS等技术来获取用户的位置信息,并根据这些信息...

    Android项目源码基于LBS的社交软件包括服务端

    通过研究这个项目源码,开发者不仅能学习到Android应用开发的基本技巧,还能深入了解LBS服务的实现方式以及如何构建一个完整的社交应用。这对于提升个人技能、理解移动社交系统的工作原理以及进行类似项目开发具有...

    移动应用形态在数据库上所需的适应性改变_敬宓

    为了解决上述问题,街旁网开发了CrabDB,这是一种专为LBS应用设计的数据库系统。CrabDB采用简单的key->list数据结构,每个地点(loc_id)对应一个用户签到列表,实现了定长存储,以减少空间开销。CrabDB支持多种查询...

    LBS^2 随手日记

    通过以上分析,我们可以推测"LBS^2 随手日记"是一个结合了地理位置服务和日记记录功能的网页应用,涵盖了前端、后端、数据库、地图集成等多个技术领域,为用户提供了一个富有创新和实用性的在线日记平台。

    LBS^2 一天到晚游泳的鱼

    【标题】"LBS^2 一天到晚游泳的鱼" 暗示了一个与位置服务(Location-Based Services,简称LBS)相关的项目,可能是一个互动应用或者游戏,其主题可能与水生生物或者游泳有关。这个标题可能是项目的名字或者一个特定...

    毕设&课程作业_基于LBS和混合推荐算法的智能旅游导游系统.zip

    LBS是现代移动应用中的关键组成部分,它利用GPS、Wi-Fi、蓝牙或移动网络等技术获取用户的位置信息,从而提供与用户当前位置相关的服务。在智能旅游导游系统中,LBS技术用于实时定位游客,并根据他们的位置推荐附近的...

    weparty:基于nodejs服务器的LBS社交程序

    Weparty是一个以Node.js作为后端基础的LBS社交程序,它的出现不仅丰富了社交应用的形式,也为开发者提供了学习和实践Node.js及JavaScript技术的新场景。本文将深入探讨Weparty项目的核心技术、架构设计以及实现细节...

    lbs-sign:基于lbs的签到工具,包括Server服务和Android客户端

    【lbs-sign:基于LBS的签到工具】 lbs-sign是一个集成服务器服务和Android客户端的签到系统,利用了Location-Based Services(LBS,基于...对于学习LBS应用开发或构建类似系统的开发者来说,这是一个宝贵的参考资料。

    APP开发架构规划.doc

    这涉及到对APP后台功能的理解、架构设计的流程、通信机制的选择、服务器和开发语言的选取,以及敏捷开发方法的应用。 1. **App后台功能**: - **远程存储数据**:APP需要一个后台来存储用户信息、应用数据等,确保...

Global site tag (gtag.js) - Google Analytics