AsyncMongo和PyMongoDB地理索引查询

时间:2013-12-12 09:19:53

标签: python mongodb pymongo asyncmongo nosql

我正在尝试使用$near选项在pymongo和asyncmongo中获取地理索引。但它总是返回错误附近的位置。任何人都可以帮我解决问题。

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

2 个答案:

答案 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)

希望,将来对其他人有帮助。