Demo - https://mongoplayground.net/p/fIlimwXuOWK
In 1st pipeline - $addFields add a new field UpdateNewDt with {date, hour, time} details in GMT.
2nd pipeline - $set UpdateNewDt.hour convert to 12 hour clock and add AM and PM eg:- 12 - 12 PM, 02- 02 AM, 23- 11 PM
3rd pipeline - $set combine data back to a string
4th pipeline - $project - UpdateDt
db.collection.aggregate([
{
"$addFields": {
UpdateNewDt: {
date: { $dateToString: { format: "%m/%d/%Y ,", date: "$UpdateDt", timezone: "GMT" }},
hour: { $dateToString: { format: "%H", date: "$UpdateDt", timezone: "GMT" }},
time: { $dateToString: { format: ":%M:%S", date: "$UpdateDt", timezone: "GMT" }}
}
}
},
{
$set: {
"UpdateNewDt.hour": {
$cond: {
"if": { $gt: [ { "$toInt": "$UpdateNewDt.hour" }, 11 ] },
"then": {
"$concat": [
{
$cond: [
{ $eq: [{ "$toInt": "$UpdateNewDt.hour"},12 ] },
"12",
{ $toString: {"$subtract": [ { "$toInt": "$UpdateNewDt.hour" }, 12 ] }}
]
},
" PM" ]
},
"else": { "$concat": [ "$UpdateNewDt.hour", " AM" ] }
}
}
}
},
{
$set: {
"UpdateNewDt": {
"$concat": [
"$UpdateNewDt.date",
{ "$arrayElemAt": [{ "$split": [ "$UpdateNewDt.hour", " " ] }, 0 ] },
"$UpdateNewDt.time",
" ",
{ "$arrayElemAt": [{ "$split": [ "$UpdateNewDt.hour", " " ] }, 1 ] }
]
}
}
},
{
$project: { UpdateDt: "$UpdateNewDt" }
}
])
Input -
[
{
"key": 1,
UpdateDt: ISODate("2021-04-06T02:07:47.231Z")
},
{
"key": 2,
UpdateDt: ISODate("2021-04-06T22:07:47.231Z")
},
{
"key": 3,
UpdateDt: ISODate("2021-04-06T12:07:47.231Z")
}
]
Output -
[
{
"UpdateDt": "04/06/2021 ,02:07:47 AM",
"_id": ObjectId("5a934e000102030405000000")
},
{
"UpdateDt": "04/06/2021 ,10:07:47 PM",
"_id": ObjectId("5a934e000102030405000001")
},
{
"UpdateDt": "04/06/2021 ,12:07:47 PM",
"_id": ObjectId("5a934e000102030405000002")
}
]