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

jvc*_*c26 5 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()
Run Code Online (Sandbox Code Playgroud)

默认情况下,这按照评论提交的时间顺序排序,但我想SortedListFieldupvotes嵌入的评论文档的属性进行排序.这是可能的,如果是这样,我该怎么做呢?

Nei*_*unn 5

如果从文档本身不清楚,单元测试实际上已经涵盖了这一点:

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

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

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