Mongoengine:如何按嵌入式文档字段对嵌入文档列表进行排序

时间:2014-04-10 19:53:12

标签: python mongodb mongoengine

所以我所追求的是:

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

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

默认情况下,这按照评论提交的时间顺序排序,但我想按嵌入的评论文档的SortedListField属性进行upvotes排序。这是可能的,如果可以的话,我该如何解决呢?

1 个答案:

答案 0 :(得分:5)

如果unit tests本身不清楚,documentation实际涵盖了这一点:

class Post(Document):
    title = StringField()
    comments = SortedListField(EmbeddedDocumentField(Comment)
                               ordering="upvotes", reverse=True)
    post_date = DateTimeField()

因此,添加“ordering”关键字允许字段在项目更改为指定时进行排序。您可能还需要反向语句以确保最高的“upvotes”值也是第一个。

单元测试实际上也显示了其他一些用法,因此总是找到可能模糊不清的用法的良好来源。