在MongoDB中将一天增加到一个日期

在MongoDB中将一天增加到一个日期,mongodb,mongodb-query,Mongodb,Mongodb Query,如何在不必手动设置日期的情况下,将文档中的日期增加7天 Collection Data: { "_id" : ObjectId("5e302f83edd1fd00125abbf9"), "dateTransferred" : 2020-01-26T00:00:00.000+00:00 } 我可以使用以下工具轻松更新收藏: db.data.updateMany( {}, { "$set": { "dateTransferred": new ISODate("202

如何在不必手动设置日期的情况下,将文档中的日期增加7天

Collection Data:
{
    "_id" : ObjectId("5e302f83edd1fd00125abbf9"),
    "dateTransferred" : 2020-01-26T00:00:00.000+00:00
}
我可以使用以下工具轻松更新收藏:

db.data.updateMany(
  {},
  {
    "$set": { "dateTransferred": new ISODate("2020-02-03T03:34:54Z") }
  }
)

有没有一种方法可以像DateAdd一样动态地更新它?没有,您不能使用这个简单的符号访问正在更新的记录的值

您可能希望尝试使用仅限于mongodb 4.2+的聚合管道,如下所述:


到目前为止,我自己还没有尝试过,但看起来很有希望-

是的,在MongoDB 4.2+中,您可以这样更新它:

db.col.updateOne(
   { "_id": ObjectId("5e302f83edd1fd00125abbf9") },
   [
      { $set: { dateTransferred: { $add: ["$dateTransferred", 1000 * 60 * 60 * 24] } } }
   ]
)
当然,如果您想更新所有文档,那么

db.col.updateMany(
   {},
   [
      { $set: { dateTransferred: { $add: ["$dateTransferred", 1000 * 60 * 60 * 24] } } }
   ]
)

我刚刚尝试在聚合管道中使用$add增加一个日期,并确认它有效。有关详细信息,请参阅。感谢您的帮助。我尝试使用updateMany,但它给了我一个错误。相反,我使用db.col.update并添加了multi:true,它工作得非常好。谢谢。updateMany等于update…,multi:true,很可能只是一个输入错误。或者您的MongoDB早于3.2版。