Как получить $ рядом с работой в Flask-Mongoalchemy
Я пытался работать над извлечением событий из моей базы данных mongoDB, которые находятся близко к местоположению текущего пользователя
Я попытался переформатировать мою модельную схему, чтобы она содержала [type: "Point"], и даже упорядочил мою долготу и широту в список. Я также попытался добавить индексы "2dsphere" с использованием мета в мою модель на основе того, что я видел в документации по монго-алхимии.
Моя модель
Класс Event(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 = resource(*args, **kwargs) Файл "/home/creative_joe/.local/lib/python3.5/site-packages/flask/views.py", строка 88, в поле зрения, возвращает файл self.dispatch_request(*args, **kwargs) File "/home/creative_joe/.local/lib/python3.5/site-packages/flask_restplus/resource.py", строка 44, в файле dispatch_request resp = meth(*args, **kwargs)"/media/creative_joe/3004586c-9a2d-4cb0-8a5f-d41fe99afc05/home/creative_joe/MonkeyMusic.server/app/views/main.py", строка 323, в файле get "$maxDistance": 4000 File "/home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/query.py", строка 139, сначала в doc in iter(self): Файл" /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 value = next(self.cursor) Файл "/home/creative_joe/.local/lib/python3.5/site-packages/mongoalchemy/py3compat.py", строка 41, в следующем возвращает его. Файлnext() "/home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py", строка 1189, в следующем if len(self.__data) или self._refresh(): File "/home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py", строка 1104, в _refresh self.__send_message(q) File "/home/creative_joe/.local/lib/python3.5/site-packages/pymongo/cursor.py", строка 982, в файле __send_message helpers._check_command_response(first)"/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