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

如何在Mongoose中仅为子文档添加时间戳而不为父文档添加?

解决Mongoose仅为子文档添加时间戳的问题

你遇到的问题大概率是代码里的语法错误导致Mongoose解析异常,进而意外给主文档添加了时间戳。修正错误后,就能实现仅子文档带时间戳的需求。

修正后的正确Schema代码

const feedSchema = new mongoose.Schema(
  {
    userId: {
      type: String,
      required: true,
    },
    feed: [
      new mongoose.Schema(
        {
          // 子文档字段
        },
        { _id: false, timestamps: true } // 移除了此处多余的闭合大括号
      ),
    ],
  },
  {
    _id: false,
    timestamps: false, // 明确禁用主文档时间戳
    versionKey: false,
  }
);

关键说明

  • 语法错误修正:你原来的子文档Schema配置末尾多了一个},这会让Mongoose无法正确识别Schema选项,触发不符合预期的默认行为。修正后,主文档的timestamps: false会被严格执行,不会生成createdAt和updatedAt字段。
  • 子文档时间戳生效:子文档配置里的timestamps: true会自动为feed数组中的每个子文档添加createdAt和updatedAt字段,完全符合你的需求。
  • 验证方法:创建并保存文档后,打印文档内容即可验证——主文档仅包含userId和feed字段,每个子文档则带有对应的时间戳字段。

如果修正后仍有问题,可以排查两点:

  • 确认使用的Mongoose版本在v5.10.0及以上,该版本对子文档时间戳的支持更稳定。
  • 检查是否存在全局插件或配置覆盖了当前Schema的timestamps设置,比如全局启用了时间戳相关插件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:06:00