在MongoDB中,$maxDistance如何计算?

12

我似乎找不到这个信息。但是在地理搜索中,你可以指定$maxDistance,但是我找不到这是英里、千米等什么单位。

这是我使用的示例查询:

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

从我的酒店数据库返回15。

感谢任何信息。

2个回答

22

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

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


什么是度的单位?我正在执行与cbmeeks几乎完全相同的查询。如果我需要来自1公里内的结果,应该设置什么最大距离? - Jonathan Clark
2
这不是精确的,但是为了大致转换,您可以将所需的距离(以公里为单位)除以111。(对于英里,您需要除以约69。) - John Flatness
11
为了更加准确,因为我刚刚为此进行了研究,这可以明显地帮助未来的访问者,实际公式是:1°纬度= 69.047英里= 111.12公里。 - Dominic Goulet
1
然而,对于经度来说并不那么简单,因为转换因子随纬度的变化而变化。 - Rasmus Storjohann

3
如果您正在使用$near
$maxDistance = your distance in Kms / 111 

如果您使用$nearSphere

$maxDistance = your distance in kms/ 6378

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接