在 ListField 中查询的最佳方式

Best Way to Query inside ListField

我有以下使用 MongoEngine 的代码:

class Comment(EmbeddedDocument):
    content = StringField()
    name = StringField(max_length=120)


class Post(Document):
    title = StringField(max_length=120, required=True)
    author = StringField(required=True)
    tags = ListField(StringField(max_length=30))
    comments = ListField(EmbeddedDocumentField(Comment))

# Create a post:
post = Post(title="Quora rocks", author="Ross", tags=['tutorial', 'how-to'])
post.save()

comment1 = Comment(content="Great post!", name="john")
comment2 = Comment(content="Great post too!", name="dave")

post.comments.append(comment1)
post.comments.append(comment2)
post.save()

# Create a post:
post = Post(title="Books", author="Chandler")
post.save()

comment1 = Comment(content="Stupid post!", name="justin")
comment2 = Comment(content="Stupid post!", name="mark")

post.comments.append(comment1)
post.comments.append(comment2)
post.save()


我想先得到 Ross 的 post,然后找到 john 的评论。最好的方法是什么?我有 MongoEngine 0.9.5

我想我找到了问题所在。我们需要 EmbeddedDocumentListField 而不是 ListField 的 EmbeddedDocumentField。这使得过滤嵌入文档变得更加容易。