我正在尝试在一个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 }
甚至可能吗?我很感激你的帮助。
答案 0 :(得分:0)
您可以使用setDate()
方法设置" expiryTimestamp"值。
db.collection.updateOne(
{ "_id": 123 },
{ "$set": {
"lastUpdatedTimestamp": new Date(),
"expiryTimestamp": new Date().setDate(new Date().getDate() + 1)
}}
)
除非您想要退回新旧文档,否则不需要使用findOneAndUpdate
。