Reputation: 83
I am trying this aggregation but output is displayed in reverse
{
"SWITCHID": "Z4-W40-SS451A/5",
"CREATE_DATE": ISODate("2018-02-24T19:00:14.808Z"),
"RECEIVEDDATE": ISODate("2018-02-24T20:30:14.808Z"),
"STATUS": "LIGHTS ON",
"avgduration": 202.50562416666668,
"offduration": 1.5
} {
"SWITCHID": "Z4-W40-SS451A/5",
"CREATE_DATE": ISODate("2018-02-24T19:00:14.808Z"),
"RECEIVEDDATE": ISODate("2018-02-24T20:30:14.808Z"),
"STATUS": "LIGHTS OFF",
"avgduration": 269.5074988888889,
"offduration": 1.5
}
db.k.aggregate({
"$group": {
_id: {
SWITCHID: "$SWITCHID"
},
on_minus_off: {
$sum: {
"$cond": [{
"$eq": ["$STATUS", "ON"]
}, "$avgduration", {
$subtract: [0, "$avgduration"]
}]
}
}
}
})
output is:
{
"_id" : {
"SWITCHID" : "Z4-W40-SS451A/5"
},
"on_minus_off" : -472.0131230555556
}
but expected output is:
202.50562416666668-269.5074988888889=-67.00187472222222
Upvotes: 0
Views: 34
Reputation: 1057
i think your condition is wrong
"$eq": ["$STATUS", "ON"]
it should be
"$eq": ["$STATUS", "LIGHTS ON"]
Upvotes: 1