我正在使用Flask-MongoAlchemy构建Flask应用,但我无法整理查询。
对于' Group'我有以下文档结构。文件:
{'name': 'some_name',
'participants': [
{'participant_id': 12345}
{'participant_id': 98765}
]
}
我尝试编写方法Participant.groups()
,该方法调用数据库以返回组的所有实例,其中participant_id
匹配self.id
。< / p>
我正在阅读MongoAlchemy文档,但我发现很少基于内部列表进行查询。
在查看了SO回答here之后,我尝试了
def groups(self):
return Group.query.filter(Group.participants.participant_id == self.id)
但也许不出所料,它在尝试评估participants.participant_id
时会抛出错误。
有什么见解?我已经看过使用常规MongoDB语法的示例,但是如何使用MongoAlchemy实现这一点却很茫然。
谢谢!
答案 0 :(得分:0)
非常成功!
在这种情况下,下载到PyMongo语法似乎就是这样:
def groups(self):
return Group.query.filter(
{'participants': {'$elemMatch': {'participant_id': self.id}}}).all()