2013-12-12 81 views
1

我試圖使用$near選項獲取pymongo和asyncmongo的地理索引。但它總是回錯附近的地點。任何人都可以幫我解決問題。AsyncMongo和PyMongoDB地理索引查詢

self.application.db.citydetails.find({"loc":{"$near":(latitude, longitude)}}, limit=20, callback=self.loadMoreSearchResponse) 

回答

1

首先,確保你的citydetails.loc數據存儲爲一個以GeoJSON點:

{loc: {type: "Point", coordinates: [ longitude, latitude ]}} 

請注意,節約地球空間點的時候,經度必須放置在coordinates數組中的0指數。

然後,更改代碼查詢緯度經度之前放置:

self.application.db.citydetails.find({"loc":{"$near":(longitude, latitude)}}, limit=20, callback=self.loadMoreSearchResponse) 
+0

謝謝Danypype。它不起作用。但是你幫助我制定了GeoIndex結構。 – arthankamal

+0

+1給我一個'GeoIndex'結構 – arthankamal

0

我不知道,我有種愚弄這裏。當我拿到POST論點,我試圖將它傳遞查詢像

coordinates = self.get_argument("coordinates", "") 
latitude = coordinates.split("_")[0] 
longitude = coordinates.split("_")[1] 
self.application.db.cityinfo.find({"loc":{"$near":(longitude, latitude)}}, limit=20, callback=self.loadMoreSearchResponse) 

看來,我傳遞字符串到查詢。我只是轉換爲float那麼它的做工精細

coordinates = self.get_argument("coordinates", "") 
latitude = float(coordinates.split("_")[0]) 
longitude = float(coordinates.split("_")[1]) 
self.application.db.cityinfo.find({"loc":{"$near":(longitude, latitude)}}, limit=20, callback=self.loadMoreSearchResponse) 

希望,它會幫助的人在未來的人。