我有一個模型用戶使用MongoDB存儲的緯度和經度數據。如何使用mongoid,rails和谷歌地圖搜索「附近用戶」
我正在使用google maps javascript api v3來獲取此數據。
什麼是顯示「附近用戶」的最佳方式?
我有一個模型用戶使用MongoDB存儲的緯度和經度數據。如何使用mongoid,rails和谷歌地圖搜索「附近用戶」
我正在使用google maps javascript api v3來獲取此數據。
什麼是顯示「附近用戶」的最佳方式?
雖然DhruvPathak答案是正確的,這裏是做地理相當於mongoid Ruby代碼查詢
User.where(:loc => {'$near' => [50,50]})
User.where(:loc => {'$near' => [50,50],'$maxDistance' => 5})
存儲您的數據,以便它可以具有地理空間索引。 MongoDb對此有內置支持。然後,您可以輕鬆地使用內置的查詢距離/鄰近距離 。
看一看:
http://www.mongodb.org/display/DOCS/Geospatial+Indexing
*Querying
The index can be used for exact matches:
db.places.find({ loc : [50,50] })
Of course, that is not very interesting. More important is a query to find points near another point, but not necessarily matching exactly:
db.places.find({ loc : { $near : [50,50] } })
The above query finds the closest points to (50,50) and returns them sorted by distance (there is no need for an additional sort parameter). Use limit() to specify a maximum number of points to return (a default limit of 100 applies if unspecified):
db.places.find({ loc : { $near : [50,50] } }).limit(20)
You can also use $near with a maximum distance
db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 } }).limit(20)*
哇,mongoid岩石。 – kinet 2011-06-16 06:38:13
@ kinet糾正.... MONGODB岩石! :) – DhruvPathak 2011-06-17 06:05:55
很抱歉,此過於寬泛「,同時」太局部「。我們在這裏幫助,而不是爲你想。告訴我們您遇到的具體問題,或告訴我們什麼孤立部分給您帶來麻煩。 – coreyward 2011-06-16 04:29:43
對不起,我應該用不同的措詞:/我明顯可以想到各種解決方案,但我不知道mongo有geospacial索引。 DhruvPathak的回答很完美。 – kinet 2011-06-16 18:13:45