mongodb mongoose maxdistance的单位

use*_*745 8 geospatial mongoose mongodb

在我的应用程序中,我正在尝试使用,RentModel.find({prop_location:{$ near:[msg.lat,msg.lng],$ maxDistance:500}},function(err,docs){}我只有一个具有纬度,经度的旧金山数据库中的值.现在,

    1. 当没有maxDistance =>它可以从任何地方找到完美的位置.
    2. 当我将maxDistance添加为5并精确搜索同一位置(具有相同的纬度,经度)时,它找不到该位置.
    3. 如果是50,则与第2点相同.
    4. 如果它是500,我甚至可以找到伦敦的位置.

怎么了 ?

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

提前致谢.

use*_*745 10

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

$near : [msg.lat, msg.lng]
Run Code Online (Sandbox Code Playgroud)

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


Ram*_*Vel 7

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

所以你可以试试这个

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

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