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

Как сумирате стойностите в обект, който е вложен поддокумент в mongodb с помощта на node.js?

Документът, по който трябва да се работи, е по-долу. Това са вложени обекти:обект (двойки ключ-стойност със стойност 100) е вложен в обект ('0') (това е написано като низ), а това е вложено в друг обект ("japanese3"). Потребителското име се използва като заявка за получаване на правилния документ.

{ japanese3: 
   { '0': 
     {"japanese3a": 100,  "japanese3b": 100,  "japanese3c": 100} 
   } 
}

Целта е да се сумират числовите стойности в най-дълбоко вложения обект, така че желаният резултат е "300".

Скриптът е:

         .aggregate([
           {$match: {username: username}}, //finds the document by username
           {$set: {"japanese_array":{$objectToArray: "$japanese3.0"}}}, // all fields have the same name now (k, v)
           {$project: {_id:0, total:{$sum: "$japanese_array2.v"}}}// sum up the "v" fields                                     
       ])
        .toArray(function(err, result){
          if (err)
            console.log("Failed");
            console.log(result); 
            res.send({ status: true, msg: result[0].total}); //result shows up as a number, in this case: 300
    });                            
 });



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Грешка на драйвера Mongo-go Нова грешка на клиента ClientOptions в аргумента на mongo.NewClient

  2. Mongodb вмъква документ без поле _id

  3. MongoDB $setIntersection

  4. Дефиниране на схема Mongoose в движение от JSON-форматирано „описание“

  5. MongoDB - как да потърся вложен елемент в колекция?