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