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

使用Pymongo更新MongoDB集合文档列表内子文档的布尔字段

实现方案

你可以通过pymongo提供的数组过滤器(arrayFilters)能力完成精准的数组子文档更新,以下是适配你需求的可执行代码:

from pymongo import MongoClient

# 建立MongoDB连接(根据你的实际配置修改连接参数)
client = MongoClient('mongodb://localhost:27017/')
db = client['你的数据库名']
collection = db['你的集合名']

# 匹配顶层文档的条件
filter_condition = {'_id': "fijo_2"}
# 定义更新操作:将匹配到的数组子文档的leido字段设为True
update_operation = {'$set': {"Procesos.$[target].leido": True}}
# 数组过滤条件:匹配Procesos数组中符合三个code要求的子文档
array_filters = [
    {
        'target.code_a': "3333",
        'target.code_b': "4444",
        'target.code_c': "5555"
    }
]

# 执行更新
result = collection.update_one(
    filter=filter_condition,
    update=update_operation,
    array_filters=array_filters,
    upsert=False  # 确定文档存在的情况下建议设为False,避免误插入
)

# 可打印更新结果确认
print(f"匹配到的文档数:{result.matched_count},更新的文档数:{result.modified_count}")

注意事项

  • 字段命名要和数据库里的结构完全一致:你提供的示例代码里用了驼峰命名codeA/codeB,但你的数据库实际是下划线命名code_a/code_b,写错会导致匹配不到子文档,更新无效果
  • 如果你需要额外避免重复更新已经标记为leido=True的文档,可以在数组过滤条件里加'target.leido': False
  • 如果你需要批量更新多个符合条件的顶层文档,把update_one替换为update_many即可

内容的提问来源于stack exchange,提问作者Angel Rivas Hidalgo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:09:00