sql >> Databáze >  >> NoSQL >> MongoDB

Aktualizace Nested Array Mongoose

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.



  1. Zjistěte, zda hodnota obsahuje alespoň jednu číselnou číslici v SQL

  2. Optimalizace spojení dotazů Mongodb

  3. Po meteorickém balíčku node.js POSLOUCHÁ, ale nezobrazuje se na localhost

  4. Jak zachytit chybu při vkládání dokumentu MongoDB, který porušuje jedinečný index?