sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan summerer man værdierne i et objekt, som er et indlejret underdokument i mongodb ved hjælp af node.js?

Dokumentet, der skal arbejdes med, er nedenfor. Det er indlejrede objekter:et objekt (nøgle-værdi-par med værdien 100) er indlejret i et objekt ('0') (dette er skrevet som en streng), og dette er indlejret inde i et andet objekt ("japanese3"). Brugernavnet bruges som en forespørgsel for at få det rigtige dokument.

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

Målet er at summere talværdierne i det mest indlejrede objekt, så det ønskede resultat er "300".

Scriptet er:

         .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. Meteor $og med $or

  2. Hvordan henter man kun udvalgte mongo-id'er ved hjælp af spring data mongorepository-metoden?

  3. Hvorfor Spring ReactiveMongoRepository ikke har en gemmemetode til Mono?

  4. MongoDB $objectToArray