MongoEngine 排序嵌入文档

2 投票
1 回答
1439 浏览
提问于 2025-04-17 10:22

我在MongoEngine中有一个当前的模型:

class Comment(EmbeddedDocument):
    content = StringField()
    pub_date = DateTimeField()

class Post(Document):
    title = StringField()
    comments = SortedListField(EmbeddedDocumentField(Comment))
    post_date = DateTimeField()

我这样获取我的所有帖子:

posts = Post.objects.all()

然后我可以遍历这些帖子和评论,通过获取post.comments列表。

但是我不太确定怎么按日期对每个帖子的评论列表进行排序。我知道评论默认是按时间顺序添加的,但我该如何在评论的升序和降序之间切换,也就是说,如何让最新的评论排在最前面呢?

我尝试过使用meta属性,但没有成功:

meta = {
    'ordering': ['-pub_date']
}

有什么想法吗?

1 个回答

3

SortedListField 确保在写入数据库之前,数据集合是排好序的,这样 MongoDB 就不需要再进行排序了。如果你的数据已经按时间顺序排好了,那为什么不把这个列表反转一下,按照相反的时间顺序来遍历呢? :)

撰写回答