2014-04-10 109 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」值也是第一個。

單元測試實際上也顯示了其他一些用法,因此總是找出可能不太明顯的用法的好來源。