使用MongoDB进行非常棘手的计算是存储函数的一种情况吗?

时间:2014-01-24 13:36:12

标签: mongodb

我正在构建一个将使用Mongodb的项目。在我的场景中,我将存储包含纬度和经度数据的各种元素。

我的问题:在我的一个查询中,我将使用haversine公式列出给定距离内的所有项目,比方说,2 km,知情的坐标集。

使用存储功能,最好的方法是什么? 我怎样才能保持良好的表现?

谢谢

2 个答案:

答案 0 :(得分:2)

Mongodb支持geospatial indexesqueries。我不知道他们使用哪种算法,但它必然会给你一个比存储的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