Možná budete chtít přehodnotit svůj datový model. Jak je to v současnosti, nemůžete dosáhnout toho, co chcete. Pole senzorů odkazuje na pole. V ideálním formátu dokumentu, který jste poskytli, máte v tomto poli jeden objekt. Pak uvnitř tohoto objektu máte dvě pole s přesně stejným klíčem. V objektu JSON, nebo v tomto kontextu mongo dokumentu, nemůžete mít duplicitní klíče ve stejném objektu.
Není jasné, co přesně zde hledáte, ale možná by bylo nejlepší jít na něco takového:
{
"_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": []
}],
}
Pokud je to to, co chcete, můžete zkusit toto:
User.findOneAndUpdate(
{ _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
{ $push: { "sensors.0.measurements": { "time": req.body.time } } }
);
A jako vedlejší poznámka, pokud budete někdy ukládat pouze jeden řetězec v každém objektu v poli měření, možná budete chtít uložit pouze skutečné hodnoty namísto celého objektu { time: "value" }
. Mohlo by pro vás být tímto způsobem snazší manipulovat s daty.