如何用requests获取MongoDB surveys集合的最新提交文档?
获取MongoDB集合最新文档的Requests实现
要直接通过requests获取surveys集合里的最新提交文档,核心是利用API的查询参数让数据库端完成排序和数量限制,避免拉取全集合浪费带宽,具体操作如下:
关键前提
你的surveys文档中必须有记录提交时间的字段(比如submittedAt、createdAt这类日期字段),否则无法判定文档的先后顺序。
构造Requests请求
通过GET请求的params参数传递排序和限制条件,让数据库直接返回最新的1条数据:
import requests # 基础接口地址 api_url = "http://ipaddress:port/surveys" # 构造查询参数:按提交时间降序排序,只返回1条 query_params = { "sort": '{"submittedAt": -1}', # -1表示倒序,对应MongoDB的sort规则 "limit": 1 } # 发送请求 response = requests.get(api_url, params=query_params) # 处理响应 if response.status_code == 200: latest_survey = response.json()[0] # 取返回数组的第一条 print(latest_survey) else: print(f"请求失败:{response.status_code}")
注意事项
- 如果你的API对参数格式有特殊要求(比如部分REST框架需要把sort拆成
sortBy和sortOrder两个参数),需要对应调整参数格式,核心逻辑还是降序排序+限制1条。 - 替换
submittedAt为你实际使用的时间字段名。 - 如果API需要身份验证(比如API密钥),记得在请求头中添加验证信息,例如:
headers = {"Authorization": "Bearer your_api_key"} response = requests.get(api_url, params=query_params, headers=headers) - 确保后端API支持解析这些参数,在数据库查询时执行
sort()和limit()操作(比如用Mongoose的话就是Survey.find().sort({submittedAt: -1}).limit(1))。
内容的提问来源于stack exchange,提问作者X. Star
相关产品推荐
相关产品推荐

