I cannot find code to convert a nested object into an array.
From this:
hrManager: Object
_id: "123456789",
name: "John Doe"
To this:
hrManager: Array
0: Object
_id: "123456789",
name: "John Doe"
Using the $map does not work because it is not an array yet.
Aggregation does not work because I cannot get merge to replace the items.
db.resources.updateOne(
{ name: "J Mark" },
[{
$set: {
hrManagers: {
$objectToArray {
$map: {
input: "$hrManagers",
in: {
_id: "$$this._id",
name: "$$this.name",
startDate: null,
endDate: null
}
}
}
}
}
}]
)
or
db.resources.updateOne(
{ name: "J Mark" },
{
$project: {
hrManagers: [
{
_id: '$hrManagers._id',
name: '$hrManagers.name'
}
]
}
}, {
$merge: {
into: 'resources',
on: 'hrManagers',
whenMatched: 'replace'
}
}
)