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

MongoDB操作指南:如何向内层嵌套数组中推送新增元素

问题原因

你写法的核心错误是MongoDB更新操作的字段路径不支持[索引]的语法格式,访问数组指定索引元素的正确路径格式为数组名.索引,而非你用到的数组名[索引]。

正确写法

直接修改路径格式即可生效:

await Post
    .updateOne({ _id: postID }, { 
        $push: {
            "reactions.0.emoji1": 'random user'
        }
    })

如果你的Schema开启了严格模式,需要确认reactions.0.emoji1的路径结构和Schema定义完全匹配,否则会被Mongoose自动过滤掉更新字段。

备选方案(兼容性更高)

如果你的reactions数组元素顺序不固定,不能确定emoji1一定在第一个位置,可以用arrayFilters匹配对应emoji字段的元素再更新:

await Post.updateOne(
  { _id: postID },
  { $push: { "reactions.$[item].emoji1": "random user" } },
  { arrayFilters: [{ "item.emoji1": { $exists: true } }] }
)

这个写法会自动匹配reactions数组中所有包含emoji1字段的元素,向对应的数组中推送内容,不受元素顺序影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:06:01