1

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

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

2 回答 2

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)
于 2013-12-13T03:45:18.747 回答
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)

希望,它会在未来对其他人有所帮助。

于 2013-12-13T09:38:48.557 回答