随着近几年各类移动终端的迅速普及,基于地理位置的服务(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原生支持地理位置索引,且高性能、支持复杂查询。

是不是很简单呀。

MongoDB开发LBS应用相关推荐

  1. 结合MongoDB开发LBS应用(转)

    原文链接:结合MongoDB开发LBS应用 简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在 ...

  2. 12.Laravel5学习笔记:使用mongodb开发LBS应用

    做LBS应用有多种方案,这里介绍一下在Laravel5中使用Mongodb来实现,文章参考了: 深入浅出Symfony2 - 结合MongoDB开发LBS应用 环境说明: php集成环境:xampp ...

  3. 结合MongoDB开发LBS应用

    http://www.cnblogs.com/jifeng/p/4356052.html 然后列举一下需求: 1.实时性要高,有频繁的更新和读取 2.可按距离排序支持分页 3.支持多条件筛选(一个经纬 ...

  4. 结合MongoDB开发LBS应用(mongodb geo)

    简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...

  5. 利用mongodb开发lbs应用实践【转】

    近期作为突击队员,与同事一起突击构建了一个简单的lbs系统.当前比较主流的做法是使用mongodb,因为其已经封装了常用的lbs基本操作(如查找附近的人),功能非常强大,对于开发周期只有一周的项目,m ...

  6. 利用mongodb开发lbs应用实践

    转载:http://www.tuicool.com/articles/feueEnz 近期作为突击队员,与同事一起突击构建了一个简单的lbs系统.当前比较主流的做法是使用mongodb,因为其已经封装 ...

  7. 结合MongoDB开发LBS应用——附近的人

    "The palest ink is better than the best memory"--好记性不如烂笔头.2013~2015补记 题记: 2014.7月业务数据增长,附近 ...

  8. MongoDB开发使用手册

    一.基础部分 MongDB简介 NOSQL历史和产生原因 原因: 互联网用户数的增长和用户参与互联网习惯的改变 初始的静态内容网站,提供中心化的内容服务, 特点: 中心化,用户阅读内容 系统:Apac ...

  9. 6.3 Spring Boot集成mongodb开发

    6.3 Spring Boot集成mongodb开发 本章我们通过SpringBoot集成mongodb,Java,Kotlin开发一个极简社区文章博客系统. 0 mongodb简介 Mongo 的主 ...

最新文章

  1. 用c语言大一个三角形图形,c语言图形,请高手修改,效果是一个三角形绕一点旋转一周...
  2. red hat安装宝塔_只需几分钟即可安装Red Hat Container Development Kit(视频)
  3. vs 设置起始页不见了_发朋友圈屏蔽爸妈,结果不小心设置成了仅家人可见...场面一发不可收拾哈哈哈哈!...
  4. 第二节:ES7 新增的 includes 特性
  5. 华为回应“发射卫星抢占6G”:假消息
  6. oracle 12c transaction guard,oracle 12c的Data guard中废弃
  7. iptables调试的小窍门 之前没想到啊 从抚琴煮酒那看的
  8. C++ map的基本和高级操作
  9. 数据分析数据可视化(三)
  10. reactNative+typescript-三,底部导航器
  11. python科学计算常用包-python常用包及功能介绍
  12. 深入浅出SCSI子系统(五)SCSI设备探测
  13. 空间数据平台SDP - 医疗药品门店数字化营销
  14. 用计算机做初中模拟物理实验,仿真物理实验室初中完整版
  15. VS2015社区版使用Visual Studio Installer打包
  16. 阿里字体库的运用(网站上面的购物车或者一些小图标 箭头)
  17. 写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!
  18. 【JVM】字节码与ASM字节码增强、Instrument实现类的动态重加载
  19. 宝华计算机维修,唐山市路北区宝华计算机维修服务
  20. 使用.net(C#)发送邮件学习手册(带成功案例)

热门文章

  1. 诗配画—泰戈尔情诗欣赏(转载)
  2. 举例理解Hibernate的三种状态:瞬时态、持久态、托管(即游离态)态及互相转化
  3. 对于ISP的http会话劫持,各位看看这个文章,更换DNS纯属蛋疼
  4. tomcat双击startup.bat黑窗口一闪而过
  5. phpinfo.php在哪里,phpinfo_phpinfo获取php服务器配置信息
  6. 贫富差距源于理财意识
  7. webrtc中的ulp fec实现分析
  8. css flex布局 —— 项目属性 flex-grow
  9. 迅为iTOP-RK3568开发板支持SATA/PCIE/USB3.0/集成双核GPU/独立NPU
  10. C语言编写字符串拷贝(strcpy)函数详解以及assert函数