sql >> Database >  >> NoSQL >> MongoDB

Hoe som je de waarden op binnen een object dat een genest subdocument is in mongodb met node.js?

Het document waaraan gewerkt moet worden staat hieronder. Het zijn geneste objecten:een object (sleutelwaardeparen met de waarde 100) is genest binnen een object ('0') (dit wordt geschreven als een tekenreeks), en dit wordt genest in een ander object ("japanese3"). De gebruikersnaam wordt gebruikt als een zoekopdracht om het juiste document te krijgen.

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

Het doel is om de getalwaarden in het diepst geneste object op te tellen, zodat het gewenste resultaat "300" is.

Het script is:

         .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. Scheve leesbelasting op Mongo-replicaset

  2. Vind de totale tijd besteed door een gebruiker in mongoDB

  3. hoe variabelen $tid, $id door te geven aan de onbewerkte functie?

  4. Mongodb:Vind alle documenten waar ten minste één array-element niet overeenkomt?