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

MongoDB更新失效问题:查询无匹配、字段更新失败及计数获取方案

问题分析与解决方案

原代码的核心错误

  • 字段名不匹配:查询条件中使用的queue_name并非文档中的实际字段名,正确字段应为job_queue_name。
  • 数据类型与匹配逻辑错误:文档中job_job_id是数值类型(1059),但代码中用字符串"1059"做$gt(大于)比较——既存在类型不匹配问题,且目标文档的job_job_id就是1059,$gt会筛选大于1059的文档,根本无法匹配到目标数据。

修正后的代码(含更新计数获取)

myclient = pymongo.MongoClient("mongodb://10.64.127.94:27017/")
mydb = myclient["UPTeam"]
mycol = mydb["perf_sdwan_queue"]

# 修正查询条件:字段名正确,匹配逻辑与数据类型对应
myquery = {
    "job_job_id": 1059,
    "job_queue_name": "CURIE_BLR"
}
newvalues = { "$set": { "job_jenkins_job_id": 12, "job_status": "RUNNING" } }

# 执行更新并接收结果对象
result = mycol.update_one(myquery, newvalues)

# 获取并打印计数信息
print(f"匹配到的文档数量: {result.matched_count}")
print(f"实际修改的文档数量: {result.modified_count}")

关键说明

  • update_one返回的UpdateResult对象中,matched_count表示符合查询条件的文档总数,modified_count表示实际被修改的文档数(如果新值与原字段值完全一致,该数值会为0)。
  • 若需批量更新多个符合条件的文档,可替换为update_many方法,同样通过返回的结果对象获取计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:52:46