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

Jak sečtete hodnoty v rámci objektu, který je vnořeným vnořeným dokumentem v mongodb pomocí node.js?

Dokument, na kterém se bude pracovat, je níže. Jedná se o vnořené objekty:objekt (páry klíč-hodnota s hodnotou 100) je vnořen do objektu ('0') (toto je zapsáno jako řetězec) a tento je vnořen do jiného objektu ("japanese3"). Uživatelské jméno se používá jako dotaz pro získání správného dokumentu.

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

Cílem je sečíst číselné hodnoty v nejhlouběji vnořeném objektu, takže požadovaný výsledek je "300".

Skript je:

         .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. Zastavit sadu replik MongoDB

  2. Mongoose s mongodb jak vrátit právě uložený objekt?

  3. Vrátit pouze konkrétní pole pro dotaz v Spring Data MongoDB

  4. Používáte MongoDB vs MySQL se spoustou polí JSON?