{
"_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.