2015-05-06 120 views
0

我有一個用戶的集合與緯度經度點爲每個用戶。MongoDB的查詢查找緯度和經度點之間的距離

我想計算給定的緯度,長的值和用戶的位置之間的距離。

在MySQL中有它

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20; 

查詢是否有任何等效方法/查詢在MongoDB的?有一些方法可以在Javascript中完成此操作,但如果在Query中進行編碼則會更好。

+0

http://docs.mongodb.org/manual/applications/geospatial-indexes/ –

回答

2

Mongo不像您在sql世界中那樣爲您提供簡單的字段操作。一些geospatial results give you back the distance也是如此,但對於你想要的任務,我寧願在之後做這個計算。有一個question on SO完全針對你,並在衆多答案中給出了optimized javascript解決方案。

+0

感謝您的鏈接。問題是我在兩個不同的領域中保存了Long和Lat值。後來我意識到並更新爲[long,lat]。這工作和JavaScript的功能是如此簡單,易於理解。謝謝。 –

相關問題