随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理。
关于LBS的详细介绍及通用的几个解决方案,可以参考:深入浅出Symfony2 - 结合MongoDB开发LBS应用
本文主要举例说明使用Perl语言 + MongoDB实现查找附近的人的实现方案。
涉及的官方API说明文档列表:
实现步骤如下:
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的使用语法以及同传统sql语句的对比
资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...
C#\MongoDB应用开发实战\MongoDB
Python + MongoDB开发的百度云爬虫.zipPython + MongoDB开发的百度云爬虫.zipPython + MongoDB开发的百度云爬虫.zipPython + MongoDB开发的百度云爬虫.zipPython + MongoDB开发的百度云爬虫.zipPython + MongoDB开发...
MongoDB开发使用手册.docx 介绍mongodb的基本使用方法
mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践,mongodb实践。
基于java的mongodb开发环境搭建,环境用的是IDEA。
深入浅出MongoDB应用实战开发视频教学,里面包含笔记和资料
MongoDB数据库
mongodb开发精要 书籍 两本PDF
Spring Data MongoDB API。 Spring Data MongoDB 开发文档。
对比了mongoDB和主流数据库各自的特点,历史发展原因,介绍了MongDB的内部结构,基础操作,设计开发使用
[奥莱理] 基于 MongoDB 的 Python 应用开发 (英文版) [奥莱理] MongoDB and Python Patterns and processes for the popular document-oriented database (E-Book) ☆ 出版信息:☆ [作者信息] Niall O'Higgins ...
单页应用采用 React, Flux, MaterialUI, NodeJS, ES6和Mongodb开发。用webpack打包
MongoDB 开发文档 ,包含各个语言示例!
基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip基于SpringBoot+Elasticsearch+MongoDB开发的...
个人收集的mongodb开发学习资料,有需要的可以下载。
[奥莱理] Node.js 应用程序开发 (MongoDB 及 Backbone 实现) (英文版) [奥莱理] Building Node Applications with MongoDB and Backbone (E-Book) ☆ 出版信息:☆ [作者信息] Mike Wilson [出版机构] 奥莱理 ...
mongodb开发java包