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

如何使用PyMongo向MongoDB对象字段添加新键值对?

解决PyMongo更新MongoDB嵌套字段时避免替换的问题

你当前代码里用的$post是MongoDB不存在的操作符,而且即便使用正确的$set,如果直接指定整个Products对象,也会覆盖原有内容。要在Products中新增键值对而不替换原有内容,有两种常用方法:

方法一:使用$set配合点路径指定单个新增键

直接通过点符号定位到Products下的新键,只会新增/更新该键,不影响其他已有内容:

import pymongo

client = pymongo.MongoClient("mongodb://localhost:****/")
db = client['StoreF']
column = db['base_shop']
# 在Products中新增PS5:15,保留原PSF:11
column.update_one({'id': 2}, {"$set": {'Products.PS5': 15}})

方法二:使用$mergeObjects批量新增多个键

如果需要一次性添加多个键值对,可以用$mergeObjects合并现有内容和新对象(MongoDB 3.6+版本支持):

import pymongo

client = pymongo.MongoClient("mongodb://localhost:****/")
db = client['StoreF']
column = db['base_shop']
# 批量新增PS5:15和Xbox:20到Products中
column.update_one(
    {'id': 2},
    {"$set": {
        "Products": {"$mergeObjects": ["$Products", {"PS5": 15, "Xbox": 20}]}
    }}
)

注意事项

  • 不要使用不存在的$post操作符,MongoDB中用于更新字段的基础操作符是$set
  • $mergeObjects会保留原有字段,仅新增或覆盖重复的键(如果新对象中有和原有相同的键,会用新值覆盖旧值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:40:30