Увеличение месяцев до даты с помощью атрибута element - PullRequest
1 голос
/ 09 июля 2020

Допустим, у меня есть набор подписок, как показано ниже:

{
    "id": "8SDQ8"
    "durationInMonths": 12,
    "startDate": {
        "$date": "2020-07-03T09:14:46.609Z",
    },
    "endDate": {
        "$date": "2021-07-03T09:14:46.609Z",
    }
}

Как я могу добавить $ durationInMonths к переменной дате, не будучи вынужденным заранее получать $ durationInMonths (что добавляет неэффективный сетевой обход) ? Примерно так:

const myDate = new Date();
const sub = await Subscription.findOneAndUpdate({
    id: '8SDQ8'
}, {
    $set: {
        startDate: myDate,
        endDate: {
            $addMonths(myDate, "$durationInMonths")
        }
    }
});

1 Ответ

1 голос
/ 09 июля 2020

Обновлено для расчета конечной даты в месяцах:

db.Subscription.update(    
    {_id: "8SDQ8"
},
[
   { $set: { 
      startDate: myDate, 
      endDate: {$dateFromParts: { 
         'year' : { $year: myDate }, 
         'month' : {$add: [
                     { $month: myDate
                     },
                     "$duration"
                  ]
               }, 
         'day': { $dayOfMonth: myDate
               }
            }
         } 
      }
   }
]
)

В этом ответе предполагается, что вас интересуют только год, месяц и день, но вы можете легко включить более точную дату / время в свой endDate если хочешь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...