Я пытался работать над извлечением событий из моей базы данных mongoDB, которые близки к местоположению текущего пользователя
Я попытался переформатировать мою модельную схему, чтобы она содержала [type: "Point"], и даже упорядочил мою долготу и широту в список.
Я также попытался добавить в свою модель индексы «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]
Traceback (последний вызов был последним):
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/flask/app.py", строка 1813, в full_dispatch_request
rv = self.dispatch_request ()
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/flask/app.py", строка 1799, в dispatch_request
вернуть self.view_functionsrule.endpoint
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/flask_restplus/api.py", строка 325, в оболочке
resp = ресурс (* args, ** kwargs)
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/flask/views.py", строка 88, в поле зрения
вернуть self.dispatch_request (* args, ** kwargs)
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/flask_restplus/resource.py", строка 44, в dispatch_request
респ = мет (* args, ** kwargs)
Файл "/media/creative_joe/3004586c-9a2d-4cb0-8a5f-d41fe99afc05/home/creative_joe/MonkeyMusic.server/app/views/main.py", строка 323, в get
«$ maxDistance»: 4000
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py", строка 139, в первую очередь
для док в инер (сам):
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py", строка 412, в следующем
вернуть self._next_internal ()
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py", строка 416, в _next_internal
значение = следующий (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 ():
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py", строка 1104, в _refresh
самостоятельно .__ send_message (д)
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py", строка 982, в __send_message
helpers._check_command_response (первый)
Файл "/home/creative_joe/.local/lib/python3.5/site-packages/pymongo/helpers.py", строка 155, в _check_command_response
поднять OperationFailure (msg% errmsg, код, ответ)
pymongo.errors.OperationFailure: запрос на обработку ошибок: ns = heroku_c9gg06k0.EventTree: поле GEONEAR = местоположение maxdist = 4000 isNearSphere = 0
Сортировать: {}
Proj: {}
планировщик вернул ошибку: не удалось найти индекс для запроса $ geoNear