如何使用 MongoEngine 反转 EmbeddedDocument QuerySet 的顺序?

How can I reverse the order of a EmbeddedDocument QuerySet using MongoEngine?

以下是我的 类 的简化版本。我想要做的就是反转嵌入文档的顺序,以便首先显示最新的,而不是最后显示的。

class User(Document):
        username = StringField(unique=True) 
        userreviews = EmbeddedDocumentListField(Review)


class Review(EmbeddedDocument):
    review_date = DateTimeField()

我第一次得到这样的用户:

the_user: QuerySet = user.User.objects.filter(
    username=request.form["username"])

然后我获取第一个用户并使用切片获取该用户的前 10 条评论(出于分页原因):

review_query: QuerySet = the_user.fields(
        slice__userreviews=[0, 10]).first()

如何在通过切片获取评论之前反转评论的顺序?我真的必须将它们颠倒存储才能完成此操作,还是有办法在存储后完成此操作?

我会自己回答这个问题,以防有人遇到同样的问题。 EmbeddedDocumentListField 上的排序似乎有点受限。从这里更改 class 中的字段要容易得多:

class User(Document):
    username = StringField(unique=True) 
    userreviews = EmbeddedDocumentListField(Review)

对此:

class User(Document):
    username = StringField(unique=True)
    userreviews = SortedListField(EmbeddedDocumentField(Review),
                              ordering="review_date", reverse=True)

从那里我还可以切换到 array-slicing 语法来对查询进行分页:

all_reviews = first_user.userreviews[0:10]