在Mongodb中以公里半径查询位置?

Bal*_*r B 4 mongodb

我有一个名为restaurants的集合..而且我已经格式化为geoJSON,我尝试查询以下方式

db.restaurants.find({ location:
   { $geoWithin:
      { $centerSphere: [ [ -73.93414657, 40.82302903 ], 5 / 3963.2 ] } } })
Run Code Online (Sandbox Code Playgroud)

我已经提到了半径5/3963.2(以英里为单位计算)..但我需要以公里为单位的半径距离 { $centerSphere: [ [ -73.93414657, 40.82302903 ], 5] }

我需要提到半径为公里

怎么做?

ser*_*iuz 7

MongoDB期望以弧度表示的值.

要将距离转换为弧度,只需将距离值除以球体(地球)的半径,其中:

3963.2是英里的地球半径.

6378.1是以Km为单位的地球半径.

db.restaurants.find({ location:
   { $geoWithin:
      { $centerSphere: [ [ -73.93414657, 40.82302903 ], 5 / 6378.1 ] } } })
Run Code Online (Sandbox Code Playgroud)

  • 哦,是的,神奇的地球半径数字。拿破仑对“千公里”的定义将其定义为从赤道到极点的距离的万分之一或90度。(独裁者喜欢使事情保持简单。)因此,每度10,000 / 90 = 111.111 km。每弧度即6,366.2公里。在温带地区,实际数字更接近111.318,因此每弧度可获得6378.1公里。(尽管地球不完全是球形,但独裁度数也是如此。)当您使用GPS距离时,会出现误差。* Close *可在马蹄铁和GPS中使用。 (2认同)