sql >> Databasteknik >  >> NoSQL >> MongoDB

Uppdaterar Nested Array Mongoose

Du kanske vill ompröva din datamodell. Som det är just nu kan du inte åstadkomma det du vill. Sensorfältet hänvisar till en array. I det ideala dokumentformatet som du har angett har du ett enda objekt inuti den arrayen. Sedan i det objektet har du två fält med exakt samma nyckel. I ett JSON-objekt, eller mongodokument i detta sammanhang, kan du inte ha dubbletter av nycklar inom samma objekt.

Det är inte klart exakt vad du letar efter här, men det kanske är bäst att välja något sånt här:

{
"_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": []
}],
}

Om det här är vad du vill kan du prova detta:

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

Och som en sidoanteckning, om du bara någonsin kommer att lagra en enda sträng i varje objekt i mätarrayen, kanske du vill bara lagra de faktiska värdena istället för hela objektet { time: "value" } . Du kanske tycker att data är lättare att hantera på detta sätt.



  1. $push motsvarande för karta i mongo

  2. Tillstånd nekad när 'mongod'-kommandot körs efter lyckad installation

  3. Sharding i MongoDB

  4. MongoDB slår samman relaterade samlingsobjekt med andra samlingsresultat