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

使用pymongo操作MongoDB时聚合查询后如何保留JSON原有键名

问题解决方法

你当前返回的结果无原始键名,是因为代码中将查询到的各字段值手动拼接为数组存入结果列表,数组结构本身不携带键名信息,序列化后就只有字段值返回。

修改后的完整代码

@app.route("/api/v1.0/players/top-assister", methods=["GET"])
def top_assister():
    pipeline = [ 
        { "$match" : { "assists" : {"$gte" : 12} } },
        # 新增_id:0 关闭MongoDB默认返回的_id字段
        { "$project" : {"_id": 0, "assists" : 1, "player" : 1, "team":1}}
    ]

    top_assister = []
    for player in players.aggregate(pipeline):
        # 直接将带键名的字典加入结果列表即可
        top_assister.append(player)

    return make_response(jsonify(top_assister), 200)

修改点说明

  • 聚合管道的$project阶段新增"_id": 0配置,过滤掉MongoDB默认返回的文档内置ID字段,只保留你需要的三个业务字段
  • 移除了遍历过程中无意义的单独字段取值、转字符串语句(你之前写的player["assists"]等语句既没有赋值也没有参与后续逻辑,属于无效代码)
  • 不再手动拼接字段值数组,直接将MongoDB返回的带键名字典存入结果列表,序列化后就会保留原始的player、team、assists键名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:06