Mongodb 如何对聚合管道的输出进行分页?

Mongodb 如何对聚合管道的输出进行分页?,mongodb,flask,pymongo,Mongodb,Flask,Pymongo,我正在尝试为一个博客的一系列文章分页。我有一个管道,输出排序很好的帖子,我试图使用facet对结果进行分页。Skip和limit正在工作,但当我将一个带有的url中的页码传递到管道中时,没有任何更改。我仍然只得到了前5个(或者不管我设置了多少限制)帖子 使用{$skip:(pageNo-1)*5}更改跳过限制,{$limit:5}这里5是每个页面的文档数page@sushantmehta对非常感谢你。这就解决了问题。我知道我必须在那里的某个地方找到(第1页)*5页。 def posts_with

我正在尝试为一个博客的一系列文章分页。我有一个管道,输出排序很好的帖子,我试图使用facet对结果进行分页。Skip和limit正在工作,但当我将一个带有的url中的页码传递到管道中时,没有任何更改。我仍然只得到了前5个(或者不管我设置了多少限制)帖子


使用{$skip:(pageNo-1)*5}更改跳过限制,{$limit:5}这里5是每个页面的文档数page@sushantmehta对非常感谢你。这就解决了问题。我知道我必须在那里的某个地方找到(第1页)*5页。
def posts_with_comment_count(page):

    pipeline = [
        {"$lookup": {
            "from": "comment",
            "localField": "_id",
            "foreignField": "post_id",
            "as": "comment_count"
        }},
        {"$addFields": {
            "comment_count": {"$size": "$comment_count"}
        }},
        {"$sort": {"_id": -1}}, 
        {'$facet': { 
            "metadata": [{"$count": "total"}, {"$addFields": {"page": int(page)}}],
            "data": [{"$skip": 0}, {"$limit": 5}] 
            }}

    ]
    posts = list(mongo.db.posts.aggregate(pipeline))
    return posts


@app.route("/")
@app.route("/home")
@app.route("/index")
def home():

    page = request.args.get('page', 1, type=int)   
    data = posts_with_comment_count(page)

    def posts():
     for post in data:
        return post['data']

    return render_template('home.html', posts=posts())