我正在尝试使用$near
选项在pymongo和asyncmongo中获取地理索引。但它总是返回错误附近的位置。任何人都可以帮我解决问题。
self.application.db.citydetails.find({"loc":{"$near":(latitude, longitude)}}, limit=20, callback=self.loadMoreSearchResponse)
答案 0 :(得分: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)
答案 1 :(得分: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)
希望,将来对其他人有帮助。