Как получить $ рядом с работой в 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

0 ответов

Другие вопросы по тегам