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

MongoDB Compass中使用$dateAdd添加年份插入文档报错如何解决?

修复MongoDB插入文档时$dateAdd操作符的错误

错误原因

你直接在插入的文档中使用了$dateAdd聚合操作符,这违反了MongoDB的规则:

  • $dateAdd是聚合管道专用操作符,仅能在聚合阶段(如$set、$project)或更新操作的聚合管道中使用,不能直接作为字段值插入。
  • MongoDB不允许普通字段名以$开头,你原代码里把$dateAdd当成了date字段的嵌套键,违反了BSON文档的命名规范,因此触发错误。

修复方案

方案1:客户端提前计算日期后插入

在应用代码中先计算好“当前日期+1年”的结果,再将这个日期值直接插入文档。以JavaScript为例:

// 计算当前日期加1年
const targetDate = new Date();
targetDate.setFullYear(targetDate.getFullYear() + 1);

// 插入文档
db.yourCollectionName.insertOne({
  "date": targetDate
});

方案2:使用聚合管道插入(MongoDB 4.2+支持)

如果需要在数据库层面自动计算日期,可以用聚合管道作为insertOne的参数,利用$$NOW获取当前数据库时间,再通过$dateAdd计算:

db.yourCollectionName.insertOne(
  [
    {
      $set: {
        "date": {
          $dateAdd: {
            startDate: "$$NOW",
            unit: "year",
            amount: 1
          }
        }
      }
    }
  ]
);

注意:将代码中的yourCollectionName替换为你实际使用的集合名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:45:42