在 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。这使得过滤嵌入文档变得更加容易。
我有以下使用 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。这使得过滤嵌入文档变得更加容易。