MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализиране на вложен масив Mongoose

Може да искате да преосмислите своя модел на данни. Както е в момента, не можете да постигнете това, което искате. Полето сензори се отнася до масив. В идеалния формат на документа, който сте предоставили, имате един обект в този масив. След това вътре в този обект имате две полета с абсолютно същия ключ. В JSON обект или mongo документ в този контекст не можете да имате дублирани ключове в един и същи обект.

Не е ясно какво точно търсите тук, но може би ще е най-добре да изберете нещо подобно:

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

Ако това е, което искате, тогава можете да опитате това:

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

И като странична бележка, ако някога ще съхранявате само един низ във всеки обект в масива от измервания, може да искате просто да съхранявате действителните стойности вместо целия обект { time: "value" } . Може да намерите данните по-лесни за обработка по този начин.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Пролетни данни mongodb търсене за ISO дата

  2. Как да намерите дължината на масива mongodb

  3. Как мога да използвам поле от aggregate в regex $match в mongodb?

  4. Как да разположа изображение на mongoDB Docker в Elastic Beanstalk?

  5. Errr 'mongo.js:L112 Грешка:не можа да се свърже със сървър 127.0.0.1:27017 в src/mongo/shell/mongo.js:L112'