【问题标题】:MongoDB does not return all points in MaxDistanceMongoDB 不返回 MaxDistance 中的所有点
【发布时间】:2014-05-05 18:33:53
【问题描述】:

我在 php 中有这个搜索查询:

[$near] => Array(
  [0] => -73.5539925
  [1] => 45.5086699
)
[$maxDistance] => 0.269978401728

0.269978401728 是这样计算的:30/111.12

问题是它找不到具有以下值的点:-73.8260706 45.4293058 只有当距离增加到 32 时才会找到它。 如果我检查这些点之间的 gmap 步行距离是 26.6,这比直线长。然后即使是 25 公里,它也应该可以工作,但现在它不适用于 30 公里。 我错过了什么吗?

谢谢

【问题讨论】:

  • 你没有提供太多关于你想要做什么的背景。添加更多信息(您正在尝试做什么,您正在使用 Mongo 的哪些功能等)可能会产生更好的答案。
  • 我有一个点 45.5086699 -73.5539925,我需要在给定距离内获得所有点。所以我使用近查询并给出 maxDistance

标签: mongodb geospatial


【解决方案1】:

我将查询更改为使用 inside 而不是 near,现在它可以正常工作了

$radiusOfEarth = 6378.1;//radius in km

$calculated_distance = (float) $distance  / $radiusOfEarth;
$search = array(
      'loc' => array('$within' =>
            array('$centerSphere' =>
                array(
                    array(floatval($lng), floatval($lat)), $calculated_distance
                )
            )
        )
  );

[loc] => Array
    (
        [$within] => Array
            (
                [$centerSphere] => Array
                    (
                        [0] => Array
                            (
                                [0] => -73.5539925
                                [1] => 45.5086699
                            )

                        [1] => 0.00501716812217
                    )

            )

    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2017-07-18
    • 2017-02-04
    • 2017-01-12
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多