我正在使用MongoDB和Flask为移动应用程序制作JSON API。
当应用程序调用/ topics /时,它将返回主题列表,但我如何有效地对结果进行分页? MongoEngine提供了一个偏移量和限制,但是在限制之前抓取了整个结果集,如果我们有数千个文档,则效率不高。
@app.route('/topics/<int:limit>/<int:page>', methods=['GET'])
def get_topics(limit=25, page=1):
if limit is None or limit <= 1:
limit = 2
if page is None or page <= 1:
page = 1
offset = (page - 1) * limit
topics = Topic.objects().limit(limit).skip(offset)
答案 0 :(得分:0)
实际上,mongoengine使用mongodb中的limit
和skip
参数进行查询。您可以使用explain对查询进行验证,并让其返回execution plan而不是结果。