Мой первый пост здесь:)
Я использую Flask и PyMongo для своего сайта и хочу, чтобы у пользователя была возможность фильтровать результаты базы данных.Для начала просто:
Базовый фильтр будет возвращать результаты, основанные на аргументе цены.Если цена равна None, я хочу вернуть все результаты.
Из документов MongoDB:
Оператор $ or выполняет логическую операцию ИЛИ для массива из двух или более выражений.и выбирает документы, которые удовлетворяют хотя бы одному из выражений
price = request.args.get('price')
if price:
price = int(price)
posts = db.collection.find({ '$or' : [
{'price' : {'$lt' : price }},
{'price' : {'$ne' : None }}
]
})
Моя идея состояла в том, что, если цена не является целым числом (Нет), оператор $ или не будет удовлетворять первому выражению иперейти ко второму, возвращая все, что не равно None.Однако это на самом деле не работает, и я не могу придумать какой-либо другой способ отобразить «все» результаты, когда аргумент не передан или когда он неверен.
Также немного вопросов борадера - что, если я хочуиметь несколько фильтров?Должен ли я создать один большой запрос к базе данных, используя оператор $ и, и манипулировать значениями переменных, чтобы получить желаемый результат?Или есть лучший способ?Единственное, о чем я думал, это маршрут для каждого фильтра, но это не похоже на то, что будет работать.Любые предложения приветствуются!Спасибо!