2014-04-10 182 views
5

所以我后是这样的: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属性排序。这是可能的,如果是这样,我该怎么做呢?

回答

5

这实际上是涵盖了unit tests如果不从自身documentation明确:

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

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

单元测试实际上也显示了其他一些用法,因此总是找出可能不太明显的用法的好来源。