Du vil måske genoverveje din datamodel. Som det er i øjeblikket, kan du ikke opnå det, du ønsker. Sensorfeltet refererer til et array. I det ideelle dokumentformat, som du har angivet, har du et enkelt objekt inde i det array. Så inde i det objekt har du to felter med nøjagtig den samme nøgle. I et JSON-objekt eller mongo-dokument i denne sammenhæng kan du ikke have dublerede nøgler i det samme objekt.
Det er ikke klart, præcis hvad du leder efter her, men måske ville det være bedst at gå efter noget som dette:
{
"_id" : "Manasa",
"name" : "Manasa Sub",
"sensors" : [
{
"sensor_name" : "ras",
"_id" : ObjectId("57da0a4bf3884d1fb2234c74"),
"measurements" : [
{
"time" : "8:00"
},
{
"time" : "9:00"
}
]
},
{
// next sensor in the sensors array with similar format
"_id": "",
"name": "",
"measurements": []
}],
}
Hvis dette er, hvad du vil, så kan du prøve dette:
User.findOneAndUpdate(
{ _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
{ $push: { "sensors.0.measurements": { "time": req.body.time } } }
);
Og som en sidebemærkning, hvis du kun skal gemme en enkelt streng i hvert objekt i målearrayet, vil du måske bare gemme de faktiske værdier i stedet for hele objektet { time: "value" }
. Du vil måske finde dataene nemmere at håndtere på denne måde.