Лучший способ сделать запрос внутри ListField - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующий код с использованием 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()


Я хочу сначала получить сообщение от Росса, а затем найти комментарий от Джона. Каков наилучший способ сделать это? У меня MongoEngine 0.9.5

1 Ответ

0 голосов
/ 05 марта 2020

Кажется, я понял проблему. Нам нужно EmbeddedDocumentListField вместо ListField для EmbeddedDocumentField. Это значительно упрощает фильтрацию внедренного документа.

...