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
属性来排序。这样做可以吗?如果可以的话,我该怎么做呢?
1 个回答
7
其实这个内容在单元测试里有提到,如果从文档上看不太明白的话:
class Post(Document):
title = StringField()
comments = SortedListField(EmbeddedDocumentField(Comment)
ordering="upvotes", reverse=True)
post_date = DateTimeField()
添加“ordering”这个关键词可以让你指定在改变项目时如何排序。你可能还想加一个反向排序的选项,这样可以确保“点赞”值最高的项目排在最前面。
单元测试里其实还有其他用法,所以它们总是一个很好的资源,可以帮助你发现一些可能不太常见的用法。