Фильтрация по значению внутреннего списка с использованием MongoAlchemy
Я создаю приложение Flask с Flask-MongoAlchemy, и у меня возникают проблемы при составлении запроса.
У меня есть следующая структура документа для документа "Группа":
{'name': 'some_name',
'participants': [
{'participant_id': 12345}
{'participant_id': 98765}
]
}
Я пытаюсь написать метод Participant.groups()
, который делает вызов в базу данных, чтобы вернуть все экземпляры группы, где есть participant_id
который соответствует self.id
,
Однако я читаю документы MongoAlchemy и нахожу очень мало о том, как делать запросы на основе внутреннего списка.
Посмотрев на SO ответ здесь, я попытался
def groups(self):
return Group.query.filter(Group.participants.participant_id == self.id)
Но, возможно, неудивительно, что он выдает ошибку, когда пытается participants.participant_id
,
Любое понимание? Я видел примеры использования обычного синтаксиса MongoDB, но затрудняюсь понять, как этого добиться, используя MongoAlchemy.
Спасибо!!
1 ответ
Огромный успех!
Переход к синтаксису PyMongo в данном случае выглядит так:
def groups(self):
return Group.query.filter(
{'participants': {'$elemMatch': {'participant_id': self.id}}}).all()