mongodb 地理位置搜寻
LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率。
mongodb地理位置索引,2d和2dsphere,对应平面和球面。
1.创建lbs集合存放地点坐标
use lbs; db.lbs.insert( { loc:{ type: "Point", coordinates: [113.332264, 23.156206] }, name: "广州东站" } ) db.lbs.insert( { loc:{ type: "Point", coordinates: [113.330611, 23.147234] }, name: "林和西" } ) db.lbs.insert( { loc:{ type: "Point", coordinates: [113.328095, 23.165376] }, name: "天平架" } )
2.创建地理位置索引
db.lbs.ensureIndex( { loc: "2dsphere" } )
3.查询附近的坐标
当前位置为:时代广场,
坐标:113.323568, 23.146436
搜寻附近一公里内的点,由近到远排序
db.lbs.find( { loc: { $near:{ $geometry:{ type: "Point", coordinates: [113.323568, 23.146436] }, $maxDistance: 1000 } } } )
搜寻结果:
{ "_id" : ObjectId("556a651996f1ac2add8928fa"), "loc" : { "type" : "Point", "coordinates" : [ 113.330611, 23.147234 ] }, "name" : "林和西" }
php代码如下:
<?php // 连接mongodb function conn($dbhost, $dbname, $dbuser, $dbpasswd){ $server = 'mongodb://'.$dbuser.':'.$dbpasswd.'@'.$dbhost.'/'.$dbname; try{ $conn = new MongoClient($server); $db = $conn->selectDB($dbname); } catch (MongoException $e){ throw new ErrorException('Unable to connect to db server. Error:' . $e->getMessage(), 31); } return $db; } // 插入坐标到mongodb function add($dbconn, $tablename, $longitude, $latitude, $name){ $index = array('loc'=>'2dsphere'); $data = array( 'loc' => array( 'type' => 'Point', 'coordinates' => array(doubleval($longitude), doubleval($latitude)) ), 'name' => $name ); $coll = $dbconn->selectCollection($tablename); $coll->ensureIndex($index); $result = $coll->insert($data, array('w' => true)); return (isset($result['ok']) && !empty($result['ok'])) ? true : false; } // 搜寻附近的坐标 function query($dbconn, $tablename, $longitude, $latitude, $maxdistance, $limit=10){ $param = array( 'loc' => array( '$nearSphere' => array( '$geometry' => array( 'type' => 'Point', 'coordinates' => array(doubleval($longitude), doubleval($latitude)), ), '$maxDistance' => $maxdistance*1000 ) ) ); $coll = $dbconn->selectCollection($tablename); $cursor = $coll->find($param); $cursor = $cursor->limit($limit); $result = array(); foreach($cursor as $v){ $result[] = $v; } return $result; } $db = conn('localhost','lbs','root','123456'); // 随机插入100条坐标纪录 for($i=0; $i
演示php代码,首先需要在mongodb的lbs中创建用户和执行auth。方法如下:
use lbs; db.createUser( { "user":"root", "pwd":"123456", "roles":[] } ) db.auth( { "user":"root", "pwd":"123456" } )
以上就介绍了mongodb 地理位置搜寻,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

标题:C#中使用Array.Sort函数对数组进行排序的示例正文:在C#中,数组是一种常用的数据结构,经常需要对数组进行排序操作。C#提供了Array类,其中有Sort方法可以方便地对数组进行排序。本文将演示如何使用C#中的Array.Sort函数对数组进行排序,并提供具体的代码示例。首先,我们需要了解一下Array.Sort函数的基本用法。Array.So

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

在进行PHP编程时,我们常常需要对数组进行合并。PHP提供了array_merge()函数来完成数组合并的工作,不过当数组中存在相同的键时,该函数会覆盖原有的值。为了解决这个问题,PHP在语言中还提供了一个array_merge_recursive()函数,该函数可以合并数组并保留相同键的值,使得程序的设计变得更加灵活。array_merge

在PHP中,有许多强大的数组函数可以使数组的操作更加方便和快捷。当我们需要将两个数组拼成一个关联数组时,可以使用PHP的array_combine函数来实现这一操作。这个函数实际上是用来将一个数组的键作为另一个数组的值,合并成一个新的关联数组。接下来,我们将会讲解如何使用PHP中的array_combine函数将两个数组拼成关联数组。了解array_comb

在PHP编程中,数组是一种非常重要的数据结构,能够轻松地处理大量数据。PHP中提供了许多数组相关的函数,array_fill()就是其中之一。本篇文章将详细介绍array_fill()函数的用法,以及在实际应用中的一些技巧。一、array_fill()函数概述array_fill()函数的作用是创建一个指定长度的、由相同的值组成的数组。具体来说,该函数的语法

Python中的array模块是一个预定义的数组,因此其在内存中占用的空间比标准列表小得多,同时也可以执行快速的元素级别操作,例如添加、删除、索引和切片等操作。此外,数组中的所有元素都是同一种类型,因此可以使用数组提供的高效数值运算函数,例如计算平均值、最大值和最小值等。另外,array模块还支持将数组对象直接写入和读取到二进制文件中,这使得在处理大量数值数据时更加高效。因此,如果您需要处理大量同质数据,可以考虑使用Python的array模块来优化代码的执行效率。要使用array模块,首先需要

在Java编程中,数组是一种重要的数据结构。数组可以在一个变量中存储多个值,更重要的是可以使用索引访问每个值。但是在使用数组时,可能会出现一些异常,其中之一是ArrayStoreException。本文将讨论ArrayStoreException异常的常见原因。1.类型不匹配数组在创建时必须指定元素类型。当我们试图将不兼容的数据类型存储到一个数组中时,就会抛

PHP语言是一种广泛应用的Web编程语言,在开发Web应用程序期间,数组是一个非常常用的数据结构。数组里的键-值对可以让程序员方便地组织和管理数据。PHP的array_flip()函数是非常有用的一个函数,它可以将数组的键和值交换,把原来的键作为值,原来的值作为键。本文将向您介绍PHP的array_flip()函数用法及其在实际编程中的应用。array_fl
