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

