I was able to get the desired result with this. I am open to suggestions to improving this however.
{
'$set': {
'items': {
'$map': {
'input': '$incoming',
'in': {
'$let': {
'vars': {
'item': {
'$arrayElemAt': [
'$items', {
'$indexOfArray': [
'$incoming._id', '$$this._id'
]
}
]
}
},
'in': {
'$mergeObjects': [
'$$this', {
'odds': '$$item.odds',
'wears': {
'$map': {
'input': {
'$arrayElemAt': [
'$items.wears', {
'$indexOfArray': [
'$items._id', '$$this._id'
]
}
]
},
'as': 'wear',
'in': {
'$mergeObjects': [
'$$wear', {
'$arrayElemAt': [
'$$this.wears', {
'$indexOfArray': [
'$items.wears._id', '$$this.wears._id'
]
}
]
}
]
}
}
}
}
]
}
}
}
}
}
}
}