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
相关产品推荐
相关产品推荐

