0

我正在尝试进行查询以获取已发布到任何帖子的最新评论,但无法正确处理。我基本上想显示网站上发布的所有评论的活动列表。

我正在使用烧瓶,mongodb 和 mongo-engine。

这是我的模型:

class Post(db.Document):
    slug = db.StringField(max_length=255, required=True)
    title = db.StringField(max_length=255, required=True)
    body = db.StringField(max_length=255, required=True)
    comments = db.ListField(db.EmbeddedDocumentField('Comment'))

class Comment(db.EmbeddedDocument):
    message = db.StringField(required=True)
    author = db.ReferenceField(User, dbref=True)
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)

任何想法,将不胜感激。干杯

4

2 回答 2

1

EmbeddedDocumentField意味着该文档只是自己文档(如字典)的一部分。因此,您可以获得所有评论的所有帖子,然后您可以获取所有评论并对其进行排序。或者您可以将comments列表设为ReferenceField和。或者你可以编写自己的 mongo 函数来完成它。CommentDocumetn

也许 pymongo 允许获取列表的一部分,但我不知道如何。但是,据我所知,mongoengoe 不允许它开箱即用。

于 2013-04-10T08:37:14.907 回答
1

该特定用例的架构设计很差。您应该将评论存储为单独的文档,然后您可以以您需要的方式有效地查询数据。

或者,您可以将最新的 x 评论非规范化并存储在单独的文档/集合中。不过,您必须手动管理此集合。

mongodb 文档有一个很好的关于数据建模的部分,这可能会有所帮助。

于 2013-04-10T11:46:27.550 回答