在MongoDB中将一天增加到一个日期
如何在不必手动设置日期的情况下,将文档中的日期增加7天在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
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版。