Може да искате да преосмислите своя модел на данни. Както е в момента, не можете да постигнете това, което искате. Полето сензори се отнася до масив. В идеалния формат на документа, който сте предоставили, имате един обект в този масив. След това вътре в този обект имате две полета с абсолютно същия ключ. В JSON обект или mongo документ в този контекст не можете да имате дублирани ключове в един и същи обект.
Не е ясно какво точно търсите тук, но може би ще е най-добре да изберете нещо подобно:
{
"_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": []
}],
}
Ако това е, което искате, тогава можете да опитате това:
User.findOneAndUpdate(
{ _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
{ $push: { "sensors.0.measurements": { "time": req.body.time } } }
);
И като странична бележка, ако някога ще съхранявате само един низ във всеки обект в масива от измервания, може да искате просто да съхранявате действителните стойности вместо целия обект { time: "value" }
. Може да намерите данните по-лесни за обработка по този начин.