首页 > 解决方案 > MongoDB 查询以使用另一个日期字段加 1 天更新文档中的日期字段

问题描述

我正在尝试使用同一文档中的另一个日期字段(例如 currentTermEndDate)更新集合中多个文档中的日期字段(例如 nextChargeDate),将 currentTermEndDate 增加 1 天

这是我编写的更新函数:

db.some_collection.updateMany(

{$or: [{_id: ObjectId('5c3e62ef2e9c4e0008f4749f')}, {_id: ObjectId('5c3e635a2e9c4e0008f47852')}, {_id: ObjectId('5c3e63a12e9c4e0008f47ab9')}]},
{
    $set: { **nextChargeDate: new Date({$add: [ "currentTermEndDate", 1*24*60*60000 ]}**)  }
}

)

这是 Mongo 中的更新:

当前期限结束日期:2019-04-04 23:59:59.999

下一个收费日期:1969-12-31 18:00:00.000

如果有人可以帮助解决方案以达到预期的结果,那将是非常有帮助的:

当前期限结束日期:2019-04-04 23:59:59.999

下一个收费日期:2019-04-05 23:59:59.999

提前致谢。

标签: mongodbmongodb-query

解决方案


您需要将日期作为ISODate("dateField").getTime(). 试试下面的查询: -

    {$or: [{_id: ObjectId('5c3e62ef2e9c4e0008f4749f')}, {_id: ObjectId('5c3e635a2e9c4e0008f47852')}, {_id: ObjectId('5c3e63a12e9c4e0008f47ab9')}]},
{
    $set: { "nextChargeDate": new Date(ISODate("currentTermEndDate").getTime()+ 1*24*60*60000)  }
}

推荐阅读