我試圖使用$near
選項獲取pymongo和asyncmongo的地理索引。但它總是回錯附近的地點。任何人都可以幫我解決問題。AsyncMongo和PyMongoDB地理索引查詢
self.application.db.citydetails.find({"loc":{"$near":(latitude, longitude)}}, limit=20, callback=self.loadMoreSearchResponse)
我試圖使用$near
選項獲取pymongo和asyncmongo的地理索引。但它總是回錯附近的地點。任何人都可以幫我解決問題。AsyncMongo和PyMongoDB地理索引查詢
self.application.db.citydetails.find({"loc":{"$near":(latitude, longitude)}}, limit=20, callback=self.loadMoreSearchResponse)
首先,確保你的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)
我不知道,我有種愚弄這裏。當我拿到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)
希望,它會幫助的人在未來的人。
謝謝Danypype。它不起作用。但是你幫助我制定了GeoIndex結構。 – arthankamal
+1給我一個'GeoIndex'結構 – arthankamal