mongodb mongoose maxdistance的单位

时间:2011-09-30 04:01:14

标签: mongodb geospatial mongoose

在我的申请中,我正在尝试使用, RentModel.find({prop_location:{$ near:[msg.lat,msg.lng], $ maxDistance:500}},function(err,docs){} 我在数据库中只有一个值为纬度,经度为san 弗朗西斯科。 现在,

    1. 当没有maxDistance =>它找出了位置 完美无缺。
    2. 当我将maxDistance添加为5并完全搜索时 位置(纬度相同,经度相同),它找不到 地点。
    3. 如果是50,则与第2点相同。
    4. 如果是500,我甚至可以从伦敦找到这个位置。
  1. 怎么了?

    距离的单位是多少? 我想知道距离5公里(公里)范围内的一切。 将db.executeCommand解决我的问题?需要检查。

    提前致谢。

2 个答案:

答案 0 :(得分:10)

最后我找到了问题的答案。 理论上经度是x轴,纬度是y轴。但我们习惯于纬度 - 经度而不是经度 - 纬度...... 所以我搜索的方式是错误的

$near : [msg.lat, msg.lng]

当我将其更改为 $ near:[msg.lng,msg.lat] 时,即使使用5KM也开始工作......所以订购就是问题。

答案 1 :(得分:7)

您需要将maxdistance值除以111.12(一度约为111.12公里),将度半径转换为km距离。

所以你可以试试这个

 RentModel.find({prop_location : { $near : [msg.lat, msg.lng], $maxDistance : 500/111.2}})

但同样的工作不同的是球体查询,你必须将度半径除以地球半径6371以使用km值