Merge incoming data onto already existing data in aggregation pipeline

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'
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }
    }
  }