MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Aggiornamento Nested Array Mongoose

Potresti voler ripensare il tuo modello di dati. Come è attualmente, non puoi realizzare ciò che desideri. Il campo sensori si riferisce a un array. Nel formato di documento ideale che hai fornito, hai un singolo oggetto all'interno di quell'array. Quindi all'interno di quell'oggetto, hai due campi con la stessa identica chiave. In un oggetto JSON o in un documento mongo in questo contesto, non puoi avere chiavi duplicate all'interno dello stesso oggetto.

Non è chiaro esattamente cosa stai cercando qui, ma forse sarebbe meglio optare per qualcosa del genere:

{
"_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 questo è quello che vuoi, allora puoi provare questo:

User.findOneAndUpdate(
    {  _id:req.body._id "sensors.sensor_name": req.body.sensor_name },
    { $push: { "sensors.0.measurements": { "time": req.body.time } } }
);

E come nota a margine, se hai intenzione di memorizzare solo una singola stringa in ogni oggetto nell'array di misurazioni, potresti voler memorizzare solo i valori effettivi invece dell'intero oggetto { time: "value" } . Potresti trovare i dati più facili da gestire in questo modo.