如何使用 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]
以下是我的 类 的简化版本。我想要做的就是反转嵌入文档的顺序,以便首先显示最新的,而不是最后显示的。
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]