I'm looking for a way to reduce an array of elements into an object based on a custom requirement.
Considering a collection like:
[
{
name: "David",
checkins: [
{
_id: "612e162d439cb04934d13f9e",
in_at: "2021-09-12T08:02:00.000Z",
out_at: "2021-09-12T09:03:00.000Z"
},
{
_id: "612e162d439cb04934d13f9f",
in_at: "2021-09-12T10:04:00.000Z",
out_at: "2021-09-12T11:05:00.000Z"
},
{
_id: "612e162d439cb04934d13f9g",
in_at: "2021-09-12T12:02:00.000Z",
out_at: "2021-09-12T14:03:00.000Z"
}
]
},
{
name: "Wilson",
checkins: [
{
_id: "612e162d439cb04934d13f9e",
in_at: "2021-09-12T08:02:00.000Z",
out_at: "2021-09-12T09:03:00.000Z"
},
{
_id: "612e162d439cb04934d13f9f",
in_at: "2021-09-12T11:04:00.000Z",
out_at: "2021-09-12T12:05:00.000Z"
},
{
_id: "612e162d439cb04934d13f9g",
in_at: "2021-09-12T13:02:00.000Z",
out_at: "2021-09-12T14:03:00.000Z"
}
]
}
]
Now what I need is that to reduce checkins array into a single object and attach it to a new property checkin. Just need to merge the first element of the array and the last element of the array. if only have one element, just need to use itself, if array is empty, checkin has to be null. output object should be:
{
_id: 1st_element_id,
in_at: 1st_element_in_at,
out_at: last_emenet_out_at
}
So the as per the example, the expected result is:
[
{
name: "David",
checkin: {
_id: "612e162d439cb04934d13f9e",
in_at: "2021-09-12T08:02:00.000Z",
out_at: "2021-09-12T14:03:00.000Z"
}
},
{
name: "Wilson",
checkin: {
_id: "612e162d439cb04934d13f9e",
in_at: "2021-09-12T08:02:00.000Z",
out_at: "2021-09-12T14:03:00.000Z"
}
}
]
Appreciate any help, Thanks!