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的不同结果';当使用$near时,将显示驱动程序和MongoDB控制台_Php_Mongodb - Fatal编程技术网

来自PHP的不同结果';当使用$near时,将显示驱动程序和MongoDB控制台

来自PHP的不同结果';当使用$near时,将显示驱动程序和MongoDB控制台,php,mongodb,Php,Mongodb,根据我的要求,我会得到不同的结果。我有一个Mongo集合“stops”,由2d坐标索引 从Mongo控制台: > db.stops.find({loc:{$near: [-##.94248402000001,##.444653126]}}).limit(3) { "_id" : ObjectId("4e8e0e64597535e4cb0001bd"), "stop_id" : 873198944, "stop_name" : "STOP ONE", "loc" : [ -##.942535

根据我的要求,我会得到不同的结果。我有一个Mongo集合“stops”,由2d坐标索引

从Mongo控制台:

> db.stops.find({loc:{$near: [-##.94248402000001,##.444653126]}}).limit(3)
{ "_id" : ObjectId("4e8e0e64597535e4cb0001bd"), "stop_id" : 873198944, "stop_name" : "STOP ONE", "loc" : [ -##.942535, ##.444538 ] }
{ "_id" : ObjectId("4e8e0e66597535e4cb001260"), "stop_id" : 1603800857, "stop_name" : "STOP TWO", "loc" : [ -##.94355, ##.444672 ] }
{ "_id" : ObjectId("4e8e0e66597535e4cb000bb7"), "stop_id" : 3659710794, "stop_name" : "STOP THREE", "loc" : [ -##.94355, ##.444672 ] }
我的PHP代码:

$mdb=new Mongo();
$result=$mdb->myapp->stops->find(array('loc'=>array('$near'=>array(floatval($this->userLongitude),floatval($this->userLatitude)))))->limit(3);
我是Mongo的新手,但我很确定代码是正确的。它返回值。。。只是,错了。下面是
var_dump(迭代器到数组($result))输出:

array
    '4e8e0e67597535e4cb002092' => 
        array
        'stop_id' => float 373055431
        'stop_name' => string 'STOP A' (length=34)
        'loc' => 
        array
            0 => float -##.937874
            1 => float ##.442722
    '4e8e0e64597535e4cb00022d' => 
        array
        'stop_id' => float 4245689695
        'stop_name' => string 'STOP B' (length=32)
        'loc' => 
        array
            0 => float -##.937515
            1 => float ##.442692
    '4e8e0e67597535e4cb0020af' => 
        array
        'stop_id' => float 134217173
        'stop_name' => string 'STOP C' (length=21)
        'loc' => 
        array
            0 => float -##.938965
            1 => float ##.443787
一切都是[经度,纬度]格式,就像Mongo文档所说的那样。我不知道是什么导致了不同的结果,除了可能我搞错了PHP查询,但它返回了数据。怎么了

为了简洁起见,我去掉了ID,并更改了一些除了隐私之外不重要的数据(即,隐藏度和停止名称是不同的-如果重要的是要查看这些,我可以编辑它,但其他所有内容都不受影响)

编辑:已解决
我过滤/解析经度和纬度的代码也将坐标截断到只有两位小数。当我直接使用控制台时,没有进行任何截断。

问题存在于我的PHP代码中。我自己的错。查看原始问题中的编辑。

只是一个猜测,但这可能是因为您有64位版本的MongoDB和32位版本的php吗?我可能错了,因为你使用的是所有的浮点数而不是整数,但仍然有一些值得怀疑的地方。var_转储的
array('loc'=>array('$near'=>array(floatval($this->userLongitude),floatval($this->userlatude))
return?@Mechcozmo你应该在下面添加答案:)