【问题标题】:using mongo aggregation how to subtract the duraion使用 mongodb 聚合如何减去持续时间
【发布时间】:2018-08-17 20:50:08
【问题描述】:

我正在使用 mongo 聚合根据“SWITCHID”和“STATUS”进行聚合,以找到 "STATUS":"LIGHTS ON""STATUS":"LIGHTS OFF" 的平均持续时间,但如何减去 "STATUS":LIGHTS OFF" 持续时间

db.collection1.aggregate([    
    { "$group" : {     
        _id: {
            SWITCHID: "$SWITCHID",    
            STATUS: "$STATUS",
            avgduration: { $avg: "$duration" }      
        }    
    }}       
])

输出是:

"_id" : {
    "SWITCHID" : "Z4-W40-SS451A/4",
    "STATUS" : "LIGHTS OFF",
    "avgduration" : 0.004166666666666667
    }
}
{
    "_id" : {
        "SWITCHID" : "Z4-W40-SS451A/4",
        "STATUS" : "LIGHTS ON",
        "avgduration" : 0.009166666666666667
    }
}

预期输出:

lightson avgduration - lightsoff avgduration

【问题讨论】:

  • @veeram 请给我建议

标签: javascript node.js mongodb mongoose aggregation-framework


【解决方案1】:

也许这可以帮助你。可以优化,但思路如下:

db.getCollection('collection1').aggregate([    
{"$group" : {     
    _id: {
        SWITCHID: "$SWITCHID",    
        STATUS: "$STATUS"
    },
    avgduration: { $avg: "$duration" }
}},
{"$group" : {     
    _id: {
        SWITCHID: "$_id.SWITCHID"
    },
    on_minus_off: { $sum:{ "$cond": [
        { "$eq": [ "$_id.STATUS", "on" ] },
        "$avgduration",
        { $subtract: [ 0, "$avgduration" ] }
    ]}}
}}
])

【讨论】:

  • { "_id" : ObjectId("5a9a75a83711955836a8b4c2"), "SWITCHID" : "Z4-W40-SS451A/5", "CREATE_DATE" : ISODate("2018-02-24T20:05:30Z "), "RECEIVEDDATE" : ISODate("2018-02-24T20:05:45Z"), "STATUS" : "LIGHTS ON", "duration" : 0.008166 } { "_id" : ObjectId("5a9a75aa3711955836a8b4c3"), " SWITCHID":"Z4-W40-SS451A/5","CREATE_DATE":ISODate("2018-02-24T20:05:30Z"),"RECEIVEDDATE":ISODate("2018-02-24T20:05:45Z") , "STATUS" : "LIGHTS OFF", "duration" : 0.004166 } 总持续时间=0.008166-0.004166=0.004 这是我的预期输出
  • total duration=0.008166-0.004166=0.004 这是我的预期输出,但没有得到相同的输出,请任何建议
猜你喜欢
  • 2018-08-30
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多