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

MongoDB字段不存在则新增存在则更新的Python代码实现

解决方法

你的代码其实已经天然支持「字段存在则更新、不存在则新增」的需求,核心原因是MongoDB的$set操作符本身就具备这个特性:

  • 当目标文档中已存在job_start_time字段时,$set会更新该字段的取值为指定的UTC时间
  • 当目标文档中不存在job_start_time字段时,$set会自动为文档新增这个字段并赋值

可以对代码做一点冗余优化(移除未使用的查询操作),同时简化查询条件的写法,优化后的代码如下:

import datetime
from pymongo import MongoClient

myclient = MongoClient("mongodb://10.64.127.94:27017/")
mydb = myclient["UPTeam"]
mycol = mydb["perf_sdwan_queue"]
# 多个查询条件直接写入字典,MongoDB默认会按逻辑与关系处理,无需显式用$and
myquery = {"job_job_id": current_job_id, "job_queue_name": "CURIE_BLR"}
newvalues = {"$set": {"job_start_time": datetime.datetime.utcnow()}}
mycol.update_one(myquery, newvalues)

额外补充两点说明:

  • 如果你的查询条件匹配到多个文档,update_one只会修改第一个匹配到的文档;若需要批量修改所有匹配文档,替换为update_many方法即可
  • 确保代码已正确导入datetime模块,否则会抛出未定义的错误

内容的提问来源于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 05:58:14