2012-01-16 95 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