在我的申请中,我正在尝试使用, RentModel.find({prop_location:{$ near:[msg.lat,msg.lng], $ maxDistance:500}},function(err,docs){} 我在数据库中只有一个值为纬度,经度为san 弗朗西斯科。 现在,
怎么了?
距离的单位是多少? 我想知道距离5公里(公里)范围内的一切。 将db.executeCommand解决我的问题?需要检查。
提前致谢。
答案 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值