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

MongoDB集計$divide計算フィールド

    あなたはほとんどそれを手に入れました。必要な変更は、FailPercentを計算する必要があることだけです。 追加のprojectで 合計はgroupの完了後にのみ利用可能であるためフェーズ 段階。これを試してください:

    db.foo.aggregate([    
        { $match: { "data.buildResult" : { $ne : null } } },
        { $group: {          
            _id: {              
                month: { $month: "$time" },             
                day: { $dayOfMonth: "$time" },             
                year: { $year: "$time" },                       
            },         
            Aborted: { $sum: { $cond :  [{ $eq : ["$data.buildResult", "ABORTED"]}, 1, 0]} },
            Failure: { $sum: { $cond :  [{ $eq : ["$data.buildResult", "FAILURE"]}, 1, 0]} },
            Unstable: { $sum: { $cond : [{ $eq : ["$data.buildResult", "UNSTABLE"]}, 1, 0]} },
            Success: { $sum: { $cond :  [{ $eq : ["$data.buildResult", "SUCCESS"]}, 1, 0]} },
            Total: { $sum: 1 }
        } }, 
        {$project:{Aborted:1, Failure:1, Unstable:1, Success:1, Total:1, FailPercent: { $divide: [ "$Failure", "$Total" ]}}},
        { $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } } 
    ])
    



    1. MongoDBをWindowsサービスとして実行するにはどうすればよいですか?

    2. ノードドライバーを使用して、ホスト間でMongodbのデータベースをクローンします

    3. サブドキュメント配列のn番目の要素(変数インデックス)に対するMongoDBクエリ

    4. ハウツー:Apache HBase RESTインターフェースを使用する、パート3