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



下面是我的类的简化版本。我只想颠倒嵌入文档的顺序,这样最新的文档就会显示在第一位,而不是最后一位。

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"])

然后我得到了第一个用户,并使用slice获得了该用户的前10条评论(出于分页原因(:

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

在通过slice获得评论之前,我如何颠倒评论的顺序?我真的必须反向存储它们才能实现这一点吗?或者在存储它们之后有办法实现这一目标吗?

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

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)

从那里我还可以切换到数组切片语法来对查询进行分页:

all_reviews = first_user.userreviews[0:10]

最新更新