You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Flask URL变量通过PyMongo检索MongoDB中的记录

问题解决

错误原因

  • pymongo的find()方法要求第一个查询过滤参数必须是Python字典/SON对象,你当前代码中使用jsonify()处理过滤条件是错误的:jsonify()是Flask提供的用于生成HTTP JSON响应的方法,返回的是响应对象而非字典,不符合pymongo的参数要求
  • 你用字符串拼接的方式构造查询条件的逻辑错误,MongoDB的查询条件直接用Python字典声明即可,不需要手动拼接成字符串

修正后的代码

@app.route("/infrastructure/<infrastructure_type>")
def get_infrastructure(infrastructure_type):
    # 直接构造Python字典作为查询过滤器
    query_filter = {"properties.type.primary": infrastructure_type}
    infrastructure = db.infrastructure.find(query_filter, projection = {"_id": False})
    return jsonify([resource for resource in infrastructure])

逻辑说明

  • 直接按照MongoDB嵌套字段的查询规则,将过滤条件写为键为properties.type.primary、值为URL传入参数的Python字典,直接传给find()方法即可
  • 不需要在查询阶段调用jsonify,仅在最后返回响应的时候用jsonify处理查询结果即可

内容的提问来源于stack exchange,提问作者bkleeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:27:02