Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用mongo聚合如何减去持续时间_Javascript_Node.js_Mongodb_Mongoose_Aggregation Framework - Fatal编程技术网

Javascript 使用mongo聚合如何减去持续时间

Javascript 使用mongo聚合如何减去持续时间,javascript,node.js,mongodb,mongoose,aggregation-framework,Javascript,Node.js,Mongodb,Mongoose,Aggregation Framework,我正在使用mongo聚合根据“SWITCHID”和“STATUS”进行聚合,以查找“STATUS”:“LIGHTS on”以及“STATUS”:“LIGHTS OFF”的平均持续时间,但如何减去“STATUS”:LIGHTS OFF“持续时间 db.collection1.aggregate([ { "$group" : { _id: { SWITCHID: "$SWITCHID", STATUS:

我正在使用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

也许这可以帮助你。它可以被优化,但这里有一个想法:

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" ] }
    ]}}
}}
])

@veeram请建议我{“创建日期”:ISODate(“2018-02-24T20:05:30Z”),“接收日期”:ISODate(“2018-02-24T20:05:45Z”),“状态”:“灯亮起”,“持续时间”:0.008166}{“创建日期”:ISODate(“2018-02-24T20:05:45Z”),“切换日期”:“Z4-02-24T20:05:45Z”),“状态”:“灯亮起”,“持续时间”:0.008166}{“创建日期”:ISODate(“5A759AA3755836A8B3C3”),“切换日期”:“Z4-40-W451A/5”创建日期:ISODate(“2018-02-24T20:05:30Z”),“接收日期”:ISODate(“2018-02-24T20:05:45Z”),“状态”:“熄灯”,“持续时间”:0.004166}总持续时间=0.008166-0.004166=0.004这是我的预期输出总持续时间=0.008166-0.004166=0.004这是我的预期输出,但没有得到相同的输出请给出任何建议