Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的MongoDB地理空间查询_Php_Mongodb_Geospatial - Fatal编程技术网

php中的MongoDB地理空间查询

php中的MongoDB地理空间查询,php,mongodb,geospatial,Php,Mongodb,Geospatial,我正在尝试使用MongDBs 2d索引来运行地理空间查询,如下所述- 它工作得很好,我能够运行如下查询 db.places.find( { point : { $near : [151.1955562233925,-33.87107475181752] , $maxDistance : 0.1/111} } ) 从CLI工具,但当我尝试在PHP中运行查询(使用PECL mongo驱动程序)时,我无法获得任何结果 有关于如何为PHP编写上述查询的帮助吗?有人知道PHP驱动程序是否支持地理空间查

我正在尝试使用MongDBs 2d索引来运行地理空间查询,如下所述-

它工作得很好,我能够运行如下查询

db.places.find( { point : { $near : [151.1955562233925,-33.87107475181752]  , $maxDistance : 0.1/111} } )
从CLI工具,但当我尝试在PHP中运行查询(使用PECL mongo驱动程序)时,我无法获得任何结果

有关于如何为PHP编写上述查询的帮助吗?有人知道PHP驱动程序是否支持地理空间查询吗


谢谢

我也没有成功地使用“near”作为PHP中find条件的一部分

您可以改用MongoDb geoNear命令:

$db->command(array('geoNear'=>'places','near'=>array(151.1955562233925,-33.87107475181752),'num'=>9));

我在生产中使用PHP驱动程序进行地理查找。它看起来像这样:

$latLong = $geo->lookupLatLong($address);
$cursor = $coats->find(Array('latLong' => Array('$near' => $latLong)))->limit(10);

也可以考虑使用<强> $NealS球舞局> /Realth>,而不是接近$以获得更精确的坐标。有关更多信息,请参阅。

在PHP中使用$nearSphere命令的示例如下:

$lonlat = array($lon, $lat);
$cursor = $this->collection->find(Array('loc' => Array('$nearSphere' => $lonlat)))->limit($limit);

其中,“loc”是二维地理空间索引,限制是可选的

让我为您的mongo查询尝试准确的PHP端口

$collection->find(Array("point" => Array('$within' => Array('$center'=> Array(Array(151.1955562233925,-33.87107475181752), 0.1/111 ) ) )));
请确保您用float键入了lat long。否则mongo扩展将把它当作一个字符串(惊奇,惊奇),并且查询将假设为空条件返回(我花了很长时间才找到)


编辑:查看Cakephp mongo驱动程序源代码,了解更多使用地理查询的方法

根据

{
$near:{
$geometry:{
键入:“点”,
坐标:[,]
},
$maxDistance:,
$MindDistance:
}
}

上述查询的php代码为:

$query = array(
                'loc' => array(
                    '$near' => array(
                        '$geometry' =>array(
                            'type' => 'Point',
                            'coordinates'=>array(floatval($lon),floatval($lat)),
                            '$maxDistance' => intval($max_distance),
                            '$mixDistance' => intval($min_distance)))));

谢谢你,我用这个工作。很遗憾,mongo中的简单JSON查询在phpHey中变得如此冗长,我正在尝试做类似的事情。你能告诉我你指定的最大距离是多少单位吗。它是公里还是英里?为什么要除以111.+1进行打字注释。那是一个麻烦的小细节。