我一直在尝试从mongoDB数据库中获取当前用户所在位置附近的事件
我试图重新格式化我的模型方案以包含[类型:“点”],甚至将我的经度和纬度排列到一个列表中。 我还尝试根据在mongo-alchemy文档中看到的内容,使用meta向我的模型添加“ 2dsphere”索引。
类事件(db.Document):
meta = {
'indexes': [
("*location.coordinates", "2dsphere")
]
}
user_id = db.StringField()
uuid = db.StringField()
name = db.StringField()
address = db.StringField()
start_time = db.DateTimeField(required=True, default=datetime.datetime.now())
end_time = db.DateTimeField(required=True, default=datetime.datetime.now())
location = db.DictField(db.AnythingField())
def get(self):
latitude = float(request.args.get('lat'))
longitude = float(request.args.get('long'))
print(longitude);
print(latitude);
event = Event.query.filter({"location" :
{ "$near" :
{
"$geometry" : {
"type" : "Point",
"coordinates" : [longitude, latitude] },
"$maxDistance" : 4000
}
}
}).first()
print(event);
[2019-01-15 23:20:59,797]应用程序中发生错误:/ v1 /事件[GET]发生异常 追溯(最近一次通话): 在full_dispatch_request中,文件“ /home/creative_joe/.local/lib/python3.5/site-packages/flask/app.py”,行1813 rv = self.dispatch_request() 在dispatch_request中,文件“ /home/creative_joe/.local/lib/python3.5/site-packages/flask/app.py”,行1799 返回self.view_functionsrule.endpoint 包装中的文件“ /home/creative_joe/.local/lib/python3.5/site-packages/flask_restplus/api.py”,第325行 resp = resource(* args,** kwargs) 视图中的文件“ /home/creative_joe/.local/lib/python3.5/site-packages/flask/views.py”,第88行 返回self.dispatch_request(* args,** kwargs) 在dispatch_request中,文件“ /home/creative_joe/.local/lib/python3.5/site-packages/flask_restplus/resource.py”,第44行 resp = meth(* args,** kwargs) 在获取的文件“ /media/creative_joe/3004586c-9a2d-4cb0-8a5f-d41fe99afc05/home/creative_joe/MonkeyMusic.server/app/views/main.py”中,第323行 “ $ maxDistance”:4000 文件“ /home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py”,第139行 对于iter(self)中的文档: 在下一个文件“ /home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py”中,第412行 返回self._next_internal() _next_internal中的文件“ /home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py”,第416行 值= next(self.cursor) 在下一个文件“ /home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/py3compat.py”中,第41行 返回。下一步() 在下一个文件“ /home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py”中,行1189 如果len(self .__ data)或self._refresh(): _refresh中的文件“ /home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py”,行1104 自我.__ send_message(q) 文件“ /home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py”,第982行,位于__send_message中 helpers._check_command_response(第一) _check_command_response中的第155行的文件“ /home/creative_joe/.local/lib/python3.5/site-packages/pymongo/helpers.py” 提高OperationFailure(msg%errmsg,代码,响应) pymongo.errors.OperationFailure:错误处理查询:ns = heroku_c9gg06k0.EventTree:GEONEAR字段=位置maxdist = 4000 isNearSphere = 0 排序:{} 项目:{} 计划者返回错误:找不到$ geoNear查询的索引