Możesz przemyśleć swój model danych. Jak to jest obecnie, nie możesz osiągnąć tego, czego chcesz. Pole sensorów odnosi się do tablicy. W idealnym formacie dokumentu, który podałeś, wewnątrz tej tablicy znajduje się pojedynczy obiekt. Następnie wewnątrz tego obiektu masz dwa pola z dokładnie tym samym kluczem. W obiekcie JSON lub dokumencie mongo w tym kontekście nie możesz mieć zduplikowanych kluczy w tym samym obiekcie.
Nie jest jasne, czego dokładnie szukasz, ale być może najlepiej byłoby wybrać coś takiego:
{
"_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": []
}],
}
Jeśli tego chcesz, możesz spróbować tego:
User.findOneAndUpdate(
{ _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
{ $push: { "sensors.0.measurements": { "time": req.body.time } } }
);
Na marginesie, jeśli zamierzasz przechowywać tylko jeden ciąg w każdym obiekcie w tablicy pomiarów, możesz po prostu przechowywać rzeczywiste wartości zamiast całego obiektu { time: "value" }
. Może się okazać, że w ten sposób łatwiej będzie się z tymi danymi obsłużyć.