We have a demo site with some static data that keeps aging off and I’d like to run a mongo query to shift the dates by 30 days. Here is an example of the data. Using mongodb 4.4.3
{
"_id" : "62bda37a4d28f5df2e0ab07f",
"qty" : 1,
"dateCreated" : ISODate("2022-06-30T13:22:02.368Z"),
"price" : 4230.0,
"ownership" : "Owned",
"itemType" : "EXPIRING_SOON",
"expirationDate" : ISODate("2022-07-21T04:00:00.000Z"),
"serialNumber" : "20202868089"
}
2
Answers
See the
$dateSubtract
aggregation operation. This with a$merge
will do the trick.You can try the following:
Here, we re-compute the
expirationDate
field, by first subtracting259200000 milliseconds (30 days)
from the current expiration date, and then we use$merge
, to update the collection as well. You can use$add
instead of$subtract
to increase the expiry date as well. Here is the playground link.You can also use the
update
function to perform this if you want the whole operation to be atomic. Like this:See it working here.