如何在 Mongoengine 中对 EmbeddedDocumentListField 对象进行分页?

How can I paginate EmbeddedDocumentListField objects in Mongoengine?

这是我的类。查询 User 中嵌入的 Review 对象并以某种方式对其进行分页的好方法是什么?

class Review(EmbeddedDocument):
    review_body = StringField(required=True)
    review_stars = FloatField(required=True, default=0)
    reviewer = LazyReferenceField('User')
    review_date = DateTimeField()

class User(Document):
    userreviews = EmbeddedDocumentListField(Review)

我确定我可以使用 .count() 轻松获得总数,但我不确定如何跳过并仅查询一部分对象。

答案似乎在于我查询数据库的方式。我做错了我想要完成的事情。

什么不起作用:

userprofile: user.User = user.User.objects(
    username=request.form["username"]).get()
all_reviews = userprofile.userreviews # work with objects here

什么应该有效:

使用 .filter() 和 .slice() 我可以获得嵌入的 Review 对象,如下所示:

reviews = user.User.objects.filter(username=request.form["username"]).fields(
    slice__userreviews=[0, 2])

for r in reviews:
    print(r.userreviews)

这将 return 2 个从索引 0 开始的评论对象。然后我只需要使用 .count() 来获取总数,我应该有分页所需的 3 个元素。