2012-01-16 96 views
2

我在MongoEngine當前的模型: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 = { 
    'ordering': ['-pub_date'] 
} 

的思考?

回答

3

SortedListField確保集合被排序之前寫入數據庫,所以在這種情況下mongo不會做任何排序。如果你將它們按時間順序排序,爲什麼不按照時間倒序的順序來恢復列表? :)

+0

是的,這是我的計劃B :)我可以在查詢返回結果後處理評論列表,但我只是想知道是否有方法在查詢級別執行此操作。 – GivP 2012-01-16 16:53:04

+0

mongo可以根據某些字段對返回的文檔進行排序,但排序並不意味着要在返回的文檔中重新排列數組。 – milan 2012-01-16 17:03:50