查询以返回其中字段与MongoEngine中的列表中的任何元素匹配的所有文档

时间:2019-05-20 16:16:48

标签: python mongodb mongoengine falconframework

我有两个MongoDB集合。一个是Users,另一个是Posts。在用户集合中,每个文档都存储该特定用户遵循的用户名列表。例如,

{
    'username' : 'username',
    'following' : ['user1', 'user2', 'user3'],
    ...
}

并且,Posts集合中的每个文档都包含一个author字段。现在,为了创建新闻提要,我想仅显示 特定用户关注的用户帖子。

{
    'content' : 'some content',
    'author' : 'user1',
    ...
}

我可以在MongoEngine(Python)中编写查询,以便查询Posts集合,并返回所有author字段是{{1}的作者之一的文档。 }清单? (用户关注的人员列表)按时间顺序排列。

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您具有以下模型和数据:

class User(Document):
    following = ListField(StringField())

class Post(Document):
    author = StringField()

User(following=['A', 'B']).save()
Post(author='B').save()

您需要已经有了列表(不能直接使用user_id查询Post),然后可以使用__in运算符来实现所需的目标:

user = User.objects.first()
print(user.following)    # [u'A', u'B']
Post.objects(author__in=user.following)    # [<Post: Post object>]