MongoDB 实现分页

依靠其自带的两个函数来实现,skip与limit函数

skip(n)为跳过n条记录,limit(n)为限制返回n条记录。

如下,find实现的是过滤查询,在此忽略,skip参数设为pagesize * (n - 1),返回限制条数为页大小。

db[table_name].find({"user_id": {"$regex": user_id}}).skip(pagesize * (n - 1)).limit(pagesize)

具体代码如下:

import numpy as np
import pymongo


class Mongo:
    port = 27017
    host = 'localhost'
    client = None
    db_name = 'jol'

    def __init__(self):
        self.client = pymongo.MongoClient(host=self.host, port=self.port)
        
    def info_page_number(self, n, pagesize, user_id):
        table_name = 'rank_info'
        db = self.client[self.db_name]
        res = []
        count = 0
        for i in db[table_name].find({"user_id": {"$regex": user_id}}):
            count = count + 1
        for i in db[table_name].find({"user_id": {"$regex": user_id}}).skip(pagesize * (n - 1)).limit(pagesize):
            res.append({
                "user_id": i['user_id'],
                "accepted": i['solved'],
                "submit": i['submit'],
                "rank": i['rank']
            })
        return {"data": res, "sum": count}
posted @ 2022-06-01 14:34  沃特艾文儿  阅读(53)  评论(0)    收藏  举报  来源