Answer a question

We can use $add to add Dates in the aggregation pipe. Is there a way to add a specific number of time units (ie days months or years) except milliseconds?

The current way to add 3 years is date: { $add: [ "$date", 3*365*24*60*60000 ] }

My expected syntax format is date: { $add: [ "$date", { $years:3 } ] } which is not working

Answers

As mentioned in my comment, you will get this function Mongo 5.0

In the meantime you can use this workaround:

db.collection.aggregate([
   {
      $addFields: {
         new_date: {
            $dateFromParts: {
               year: { $add: [{ $year: "$date" }, 3] },
               month: { $month: "$date" },
               day: { $dayOfMonth: "$date" },
               hour: { $hour: "$date" },
               minute: { $minute: "$date" },
               second: { $second: "$date" },
               millisecond: { $millisecond: "$date" }
            }
         }
      }
   }
])
Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐