在$ set语句中为$ currentDate添加时间

时间:2016-06-05 06:54:10

标签: javascript mongodb mongodb-query

我正在尝试在一个findOneAndUpdate()中执行2个操作:

  • 在一个字段lastUpdatedTimestamp中更新日期,将其设置为当前日期(此语句在我的陈述中正常工作),
  • 在其他字段expiryTimestamp中更新日期,向$currentDate添加1天(我找不到实现它的方法,所以我正在尝试$add 1从上面的字段lastUpdatedTimestamp读取的值的一天 - (我不能使这个工作)。

    findOneAndUpdate(
        {"_id":123}, 
        { $currentDate: {"lastUpdatedTimestamp":true}, $set: {"expiryTimestamp": {$add: ["$lastUpdatedTimestamp", 24*60*60000]}}}
    )
    

这是我收到的错误: { "ok" : 0.0, "errmsg" : "The dollar ($) prefixed field '$add' in 'expiryTimestamp.$add' is not valid for storage.", "code" : 52 }

甚至可能吗?我很感激你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用setDate()方法设置" expiryTimestamp"值。

db.collection.updateOne(
    { "_id": 123 },  
    { "$set": { 
        "lastUpdatedTimestamp": new Date(),  
        "expiryTimestamp": new Date().setDate(new Date().getDate() + 1) 
    }}
)

除非您想要退回新旧文档,否则不需要使用findOneAndUpdate