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

如何向MongoDB空数组添加值?排查$push与$set失效问题

问题解决

你的代码存在一个致命的语法错误:查询条件里的键名写成了_id:,多了个多余的冒号,导致MongoDB无法匹配到目标文档,所以后续的update_one操作根本没有执行。

修正后可以把两次合并为单次更新操作,无需额外先创建空数组:

if len(row['fractions']) == 0:
    collection.update_one(
        {'_id': member.id},
        {"$push": {"fractions": faction['_id']}},
        upsert=True  # 可选:如果匹配不到文档则自动创建新文档
    )

额外说明:

  • 即使fractions字段不存在,$push操作会自动将其初始化为数组并添加元素,不需要提前用$set创建空数组。
  • 若需要确保目标文档一定存在,加上upsert=True参数即可在无匹配时自动生成新文档。

内容的提问来源于stack exchange,提问作者Arthur Langley-Reddle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:42:02