Você pode querer repensar seu modelo de dados. Como está atualmente, você não pode realizar o que deseja. O campo de sensores refere-se a um array. No formato de documento ideal que você forneceu, você tem um único objeto dentro dessa matriz. Então, dentro desse objeto, você tem dois campos com exatamente a mesma chave. Em um objeto JSON ou documento mongo nesse contexto, você não pode ter chaves duplicadas no mesmo objeto.
Não está claro exatamente o que você está procurando aqui, mas talvez seja melhor ir para algo assim:
{
"_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": []
}],
}
Se é isso que você quer, então você pode tentar isso:
User.findOneAndUpdate(
{ _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
{ $push: { "sensors.0.measurements": { "time": req.body.time } } }
);
E como uma observação lateral, se você for armazenar apenas uma única string em cada objeto na matriz de medições, convém armazenar apenas os valores reais em vez de todo o objeto
{ time: "value" }
. Você pode achar os dados mais fáceis de manipular dessa maneira.