sql >> データベース >  >> NoSQL >> MongoDB

node.jsを使用して、mongodbのネストされたサブドキュメントであるオブジェクト内の値をどのように合計しますか?

    作業するドキュメントは以下のとおりです。これはネストされたオブジェクトです。オブジェクト(値が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. mongodbのテキストをデクリメントできますか?

    2. C#ドライバーを使用してMongoDBで複数のドキュメントを更新およびアップサートする方法

    3. 常に埋め込まれたEmberデータのマルチレベル階層

    4. MongoDBObjectがrrdforeachループの内部に追加されていないcasbahscalaapache spark