$dateAdd

$dateAdd 运算符将指定的时间单位数添加到日期。 在需要基于给定日期和时间间隔计算未来日期的情况下,它非常有用。

语法

$dateAdd: {
   startDate: <expression>,
   unit: <string>,
   amount: <number>,
   timezone: <string>  // Optional
}

参数

说明
startDate 添加作的开始日期。
unit 要添加的时间单位。 有效单位包括:year、、、quartermonthweekdayhourminute、。 secondmillisecond
amount 要添加的单位数。
timezone 可选。 用于作的时区。

例子

示例 1:向日期添加天数

db.collection.aggregate([
   {
      $project: {
         eventName: 1,
         newEndDate: {
            $dateAdd: {
               startDate: {
                  $dateFromParts: {
                     year: "$promotionEvents.promotionalDates.endDate.Year",
                     month: "$promotionEvents.promotionalDates.endDate.Month",
                     day: "$promotionEvents.promotionalDates.endDate.Day"
                  }
               },
               unit: "day",
               amount: 7
            }
         }
      }
   }
])

示例 2:将月份添加到日期

db.collection.aggregate([
   {
      $project: {
         eventName: 1,
         newStartDate: {
            $dateAdd: {
               startDate: {
                  $dateFromParts: {
                     year: "$promotionEvents.promotionalDates.startDate.Year",
                     month: "$promotionEvents.promotionalDates.startDate.Month",
                     day: "$promotionEvents.promotionalDates.startDate.Day"
                  }
               },
               unit: "month",
               amount: 1
            }
         }
      }
   }
])