我正在构建一个将使用Mongodb的项目。在我的场景中,我将存储包含纬度和经度数据的各种元素。
我的问题:在我的一个查询中,我将使用haversine公式列出给定距离内的所有项目,比方说,2 km,知情的坐标集。
使用存储功能,最好的方法是什么? 我怎样才能保持良好的表现?
谢谢
答案 0 :(得分:2)
Mongodb支持geospatial indexes和queries。我不知道他们使用哪种算法,但它必然会给你一个比存储的javascript函数更好的性能。
编辑:
这也是现代关系数据库支持的东西。例如,Postgres有postgis,MySQL有opengis,当然oracle也支持它。我已经看到它在Riak中使用Geohash解决了,但是现在没有方便的链接。
答案 1 :(得分:2)
检查MongoDB中的$near运算符。您可以使用它来查找给定距离内的位置。
您可以按如下方式创建查询:
db.<collection>.find( { <location field> :
{ $near :
{ $geometry :
{ type : "Point" ,
coordinates : [ <longitude> , <latitude> ] } },
$maxDistance : <distance in meters>
} } )
在使用近乎查询之前,请不要忘记添加Geospatial index。