Mongoose:将mongo集合的日期字段增加一个月

时间:2016-05-23 10:27:35

标签: node.js mongodb mongoose

我需要根据需要按天,周和月更新mongo集合的日期字段。我用以下代码计算了一天和一周:

设定第二天:

col.findOneAndUpdate(
{ _id : item._id }
, { $set : { nextRun : new Date(item.nextRun.getTime() + 86400000}}

设定下周的同一天:

col.findOneAndUpdate(
{ _id : item._id }
, { $set : { nextRun : new Date(item.nextRun.getTime() + (86400000*7))}}

如何以类似方式更新月份?

注意:我不想乘以30,因为如果当前月份有31天,更新字段会减少一天。

例如如果该字段具有值2016- 05 -24T11:30:00.000Z,则更新应将其更改为2016- 06 -24T11:30:00.000Z。

尝试使用 getMonth(),但它无效。

1 个答案:

答案 0 :(得分:1)

按如下方式添加月份:

var nextRunDate = new Date(item.nextRun);
nextRunDate.setMonth(nextRunDate.getMonth() + 1);
col.findOneAndUpdate(
    { _id : item._id }, 
    { $set : { nextRun : nextRunDate } }
);

更好的方法是使用日期处理库,例如moment,您可以使用 add() 方法

var nextRunDate = moment(item.nextRun).add(1, 'months').toDate();
col.findOneAndUpdate(
    { _id : item._id }, 
    { $set : { nextRun : nextRunDate } }
);