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

如何在PyMongo中更新嵌套字典而不修改其他关联字典

Flask+PyMongo 嵌套字典字段更新解决方案

你当前的代码通过$set直接替换了整个settings对象,导致原有字段被覆盖。要只更新settings.profile.links里的指定键值对,必须用MongoDB的点路径语法定位嵌套字段,而非替换上层完整对象。

修正后的代码:

if request.form.get("name") and request.form.get("link"):
    # 构造精准的嵌套字段路径
    target_field = f"settings.profile.links.{request.form.get('name')}"
    db.update_one(
        {"name": request.cookies.get("x-session-name")},
        {"$set": {target_field: request.form.get("link")}}
    )

说明

  • 这种写法只会修改settings.profile.links下的指定键值对,完全保留settings.dob、settings.profile.bio等其他字段。
  • 如果目标键在links中不存在,会自动新增;如果已存在,则覆盖原有值。
  • $push是数组操作符,不适用于字典类型的links,所以用$set配合点路径才是正确方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:15:22