Update push array in side of by array Id

 {
    "_id": "63ad08ebb084bbf4db5d692f",
    "ProductId": "63a2b0f87a810608e6ca6d95",
    "TemplateRevisionNum": "mtw",
    "SerialNum": 86,
    "SubAssemblies": [
        {
            "SubAssyId": "63aa536b5dc9b4a8ff364727",
            "CurrentSerialNum": 90,
            "ExchangeHistory": [
                12,
                70,
                80,
            ],
            "_id": "63ad08ebb084bbf4db5d6930"
        },
        {
            "SubAssyId": "63aa536b5dc9b4a8ff364727",
            "CurrentSerialNum": 91,
            "ExchangeHistory": [
                12,
                70,
                80,
            ],
            "_id": "63ad08ebb084bbf4db5d6931"
        }
    ],
    "FinishedTasks": 0,
    "WorkTasks": [
        {
            "PerformedBy": "liamwin",
            "StartDate": "2022-12-28T17:43:06.693Z",
            "_id": "63ad0d6982fe97b051ba507e",
            "EndDate": "2022-12-28T17:43:06.693Z",
            "Failure": "DDPP 20 - 91",
            "Remarks": "Remarks text"
        }
    ],
}
}

my model schema

const MainTravellerSchema = mongoose.Schema({
  ProductId: {
    type: String,
    require: true,
  },
  TemplateRevisionNum: {
    type: String,
    require: true,
  },
  SerialNum: {
    type: Number,
    require: true,
  },
  FinalSerialNum: {
    type: Number,
  },

  SubAssemblies: [
    {
      SubAssyId: { type: String, require: true },
      CurrentSerialNum: { type: Number },
      ExchangeHistory: { type: Array, default: [] },
    },
  ],

  FinishedTasks: { type: Number, require: true, default: 0 },

  WorkTasks: [
    {
      PerformedBy: { type: String, require: true },
      StartDate: { type: Date },
      EndDate: { type: Date },
      Remarks: { type: String },
      Failure: { type: String },
    },
  ],
});

module.exports = mongoose.model("mainTraveller", MainTravellerSchema);

//my update query method

 var newExchnage = {
                  $push: {
                    "SubAssemblies.$[].ExchangeHistory":
                     70,
                  },
                };

db.updateOne(
                   { id: "63ad08ebb084bbf4db5d692f",
                    SubAssemblies: {
                      $elemMatch: { SubAssyId: "63aa536b5dc9b4a8ff364727" },
                    },
                  },
                  (err, tra) => {
                    if (err) {
                      return res.status(500).json({
                        message:
                          "Some error occured while update End date in Main Traveller .[" +
                          err.reason +
                          "]",
                      });
                    } else if (tra) {
                      res.send(tra);
                    }
                  }
                );

the query method is all push data into all  "ExchangeHistory" array in the SubAssemblies , not only by match "SubAssyId"
What query method is wrong please help.