【问题标题】:MongoEngine sorting embedded documentsMongoEngine 对嵌入文档进行排序
【发布时间】:2012-02-11 13:45:12
【问题描述】:

我在 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()

然后我可以遍历帖子和 cmets,但获取 post.cmets 列表。

但我不确定如何按日期对每个帖子的 cmets 列表进行排序。我知道默认情况下会按时间顺序添加 cmets,但是如何在 cmets 的升序/降序之间切换,即最新评论优先?

我尝试过元属性无济于事:

meta = {
    'ordering': ['-pub_date']
}

想法?

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

    SortedListField 确保集合在写入数据库之前 已排序,因此在这种情况下 mongo 不会进行任何排序。如果您按时间顺序对它们进行排序,为什么不将列表还原为按时间倒序进行迭代呢? :)

    【讨论】:

    • 是的,那是我的计划 B :) 我可以在查询返回结果后处理 cmets 列表,但我只是想知道是否有办法在查询级别执行此操作.
    • mongo 可以根据某些字段对返回的文档进行排序,但是排序并不意味着在返回的文档中重新排列数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多