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

Mongoose操作MongoDB向数组push数据时部分属性被忽略

问题原因

你定义的User Schema中reputation字段的结构存在错误:你将数组单条元素的4个字段拆分到了4个独立对象中,而非合并在同一个对象内,导致Mongoose的字段校验过滤逻辑将不在第一个匹配结构中的字段直接丢弃。

你当前的写法相当于告诉Mongoose:reputation是一个允许存储4种不同结构对象的数组,每类对象只包含单个对应字段。当你push包含多个字段的对象时,仅第一个匹配到的voter_id字段符合第一个结构的定义,剩余score、comment等字段不属于第一个结构的允许字段,会被直接过滤,因此入库后仅保留voter_id。

修复方案

将reputation数组的元素结构调整为单对象包含所有字段即可,正确的Schema写法如下:

reputation: [
  {
    voter_id: {
      type: String,
      required: true,
    },
    score: {
      type: Number,
      required: true,
    },
    comment: {
      type: String,
      maxlength: 100,
    },
    voted_at: {
      type: Date,
      default: Date.now,
    },
  }
]

修改后重新执行updateOne操作,所有字段就能正常入库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:06:01