我如何在Flask-Mongoalchemy中获得近薪工作

时间:2019-01-15 22:51:24

标签: python-3.x flask flask-mongoengine

我一直在尝试从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查询的索引

0 个答案:

没有答案