【发布时间】:2022-12-20 03:12:00
【问题描述】:
我有一个 MongoDB 数据库,用于存储有关企业的 JSON 数据。每个企业的评论都以集合中的子文档的形式出现。我对每个企业都有 10 条以上的评论,并且我想使用 GET 请求对结果进行分页,这样我在一个页面上只能查看 10 条评论。
可以在下面找到 MongoDB 数据结构的示例;
[
{
"_id": "1",
"name": "businessName1",
"reviews": [
{
"_id": "1",
"comment": "comment1",
},
{
"_id": "2",
"comment": "comment1",
},
...
]
}
]
为了从我的 MongoDB 数据库中检索 JSON 数据,我有一个带有 API 端点的 python 文件,用于获取特定业务的评论。代码可以在下面找到;
@app.route("/api/v1.0/businesses/<string:id>/reviews", methods=["GET"])
def fetch_all_reviews(id):
data_to_return = []
business = businesses.find_one( \
{ "_id" : ObjectId(id) }, \
{ "reviews" : 1, "_id" : 0 } ) # Gets all reviews for specific business.
for review in business["reviews"]:
review["_id"] = str(review["_id"])
data_to_return.append(review) # Adds reviews to a list to display them.
return make_response( jsonify( data_to_return ), 200 )
从上面的代码可以看出,我有一个找一个()查找传入的 id 参数关联到的特定业务的函数。在这里我还声明我想获得该特定业务的所有评论。
我了解 Python 报价。跳过和。限制指定可以返回多少结果的方法,但我不确定这些方法是否与我的 find_one 方法兼容。这是真的?
我有生成页码和大小的代码,我只需要知道放在哪里page_start和页面大小这样我就可以对审核结果进行分页。
page_num, page_size = 1, 10
if request.args.get('pn'):
page_num = int(request.args.get('pn'))
if request.args.get('ps'):
page_size = int(request.args.get('ps'))
page_start = (page_size * (page_num - 1))
【问题讨论】:
标签: python json mongodb get subdocument