使用MongoAlchemy过滤内部列表的值

时间:2014-08-12 15:42:26

标签: python mongodb flask pymongo mongoalchemy

我正在使用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实现这一点却很茫然。

谢谢!

1 个答案:

答案 0 :(得分:0)

非常成功!

在这种情况下,下载到PyMongo语法似乎就是这样:

def groups(self):
    return Group.query.filter(
        {'participants': {'$elemMatch': {'participant_id': self.id}}}).all()