I am trying to add a new field createdDate to all existing documents using _id field. I am doing this for easy readability of the documents. I tried following snippet but it is not working.
dbase.collection("cname").updateMany(
{},
{ $set: { createdDate: new Date(parseInt("$_id".substring(0, 8), 16) * 1000) } }
)
.then((resp)=>{ console.log('complete') })
This is the createdDate for all my documents now (after running the query): “1970-01-01T00:00:00.000+00:00”
What is wrong with my code ?
Advertisement
Answer
You need to use update with aggregation pipeline starting from MongoDB 4.2,
- $toDate to cast type to date from
_id
dbase.collection("cname").updateMany(
{},
[{
$set: { createdDate: { $toDate: "$_id" } }
}]
)
.then((resp) => { console.log('complete') });