使用MongoAlchemy按内部列表值过滤
我正在用 Flask 和 Flask-MongoAlchemy 搭建一个应用,但在写查询的时候遇到了一些麻烦。
我有一个 'Group' 文档的结构,如下所示:
{'name': 'some_name',
'participants': [
{'participant_id': 12345}
{'participant_id': 98765}
]
}
我想写一个方法 Participant.groups()
,这个方法会去数据库里查找所有的 Group 实例,条件是这些实例里有一个 participant_id
和 self.id
匹配。
我在看 MongoAlchemy 的文档,但发现关于如何根据内部列表进行查询的信息很少。
在查看了这个 StackOverflow 的回答 这里 后,我尝试了
def groups(self):
return Group.query.filter(Group.participants.participant_id == self.id)
但可能不出所料,当它试图评估 participants.participant_id
时,抛出了一个错误。
有没有什么见解?我见过使用普通 MongoDB 语法的例子,但不知道如何用 MongoAlchemy 来实现这个。
谢谢!!
1 个回答
-1
太棒了!
在这种情况下,使用PyMongo的语法看起来是个不错的选择:
def groups(self):
return Group.query.filter(
{'participants': {'$elemMatch': {'participant_id': self.id}}}).all()