【问题标题】:Mongoengine: How to sort Embedded Document list by Embedded document fieldMongoengine:如何按嵌入式文档字段对嵌入式文档列表进行排序
【发布时间】:2014-04-11 10:48:50
【问题描述】:

所以我想要的是这样的:

class Comment(EmbeddedDocument):
    content = StringField()
    upvotes = IntField()
    pub_date = DateTimeField()

class Post(Document):
    title = StringField()
    comments = SortedListField(EmbeddedDocumentField(Comment))
    post_date = DateTimeField()

默认情况下,这是按评论提交的时间顺序排序的,但我想让SortedListField按嵌入评论文档的upvotes属性排序。这可能吗?如果可以,我该怎么做?

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

    如果从documentation 本身不清楚,这实际上是在unit tests 中涵盖的:

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

    因此,添加“ordering”关键字允许字段在更改指定项目时进行排序。您可能还希望反向语句确保最高的“upvotes”值也是第一个。

    单元测试实际上也显示了一些其他用法,因此始终是找出可能晦涩的用法的好来源。

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 2015-01-12
      • 2022-10-21
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多