Я использую Mongoengine в своем приложении flask и пытаюсь отфильтровать простой запрос. Имя моего документа - Событие, и в нем есть следующие поля:
- пользователь (ReferenceDocument)
- категория (ReferenceDocument)
- тип (StringField)
- start_time (DateField)
Моя цель - получить последние 30 событий данного пользователя, отфильтровать их по категории и типу, а затем подсчитать отфильтрованные результаты. Моя попытка была:
grades = {}
events = Event.objects(user=user).order_by('-start_time')[:30]
for category in user.categories:
grade = 0
for event_type in eEvents:
grade += (events(category=category, type=event_type.name).count(
with_limit_and_skip=True)) * event_type.value
grades[category.name] = grade
Итак, проблема в том, что запрос (вторая строка в коде) не ограничивает результаты, и я получаю все события пользователя. Когда я использую метод count после фильтрации запроса, он ограничивает счет до 30.
Кстати, есть ли идеи, как лучше сделать это с использованием функциональности mongoengine?
Спасибо