【问题标题】:How is $maxDistance measured in MongoDB?$maxDistance 在 MongoDB 中是如何测量的?
【发布时间】:2016-11-07 21:02:17
【问题描述】:

我似乎无法找到此信息。但是使用地理搜索,您可以指定 $maxDistance,但对于我来说,我无法找到英里、公里等。

这是我正在使用的示例查询:

db.hotels.find( { location: { $near : [18.74255, 99.03523], $maxDistance : 0.05 } } ).count()

返回 15(来自我的酒店数据库)。

感谢您提供任何信息。

【问题讨论】:

    标签: mongodb geospatial


    【解决方案1】:

    除非您进行球形查询(如 $nearSphere),否则 MongoDB 实际上并不关心单位,它只是将您的位置视为笛卡尔坐标。

    因此,计算出的距离将采用您输入的任何单位。由于您的 $near 点看起来像标准纬度/经度,因此在这种情况下,$maxDistance 将以度为单位。

    【讨论】:

    • 什么是度数单位?我正在以 cbmeeks 的身份进行几乎完全相同的查询。如果我需要 1 公里内的结果,我应该设置什么 maxdistance?
    • 这并不精确,但对于粗略的转换,您可以将所需距离(以公里为单位)除以 111。(对于英里,您将除以大约 69。)
    • 更准确地说,因为我刚刚对此进行了研究,这显然可以帮助未来的游客,实际公式是:1° 纬度 = 69.047 英里 = 111.12 公里
    • 不过,经度并不是那么简单,因为换算系数会随着纬度而变化。
    【解决方案2】:

    如果您使用的是$near

    $maxDistance = your distance in Kms / 111 
    

    如果你使用$nearSphere

    $maxDistance = your distance in kms/ 6378
    

    6378 是地球半径,单位为公里

    【讨论】:

      猜你喜欢
      • 2011-11-28
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2015-11-26
      • 2017-07-18
      • 2015-04-23
      相关资源
      最近更新 更多