Can you please advice how can i filter the ratio and the cases columns?
I want to filter ratio>0.5 and cases>2
Basically I’m trying to convert below tsql query
select
case when cast(rejects as float)/ cast(cases as float) > 0.66 and cases >=20 then ‘1’ else ‘0’ end as Alert from
( select count (distinct uuid) cases, count (distinct case when [meta.ui.step] =
‘RejectedMBCheck’ or [meta.ui.step] = ‘rejectedBCheck’ or [meta.ui.step]
= ‘rejectedWrongDetails’ then [Uuid]end ) rejects, cast([createdDate.$date] as date)
date from dwh_fact_cases group by cast([createdDate.$date] as date)
Here is my query:
var lastHour = new Date();
lastHour.setHours(lastHour.getHours()-24);
db.tt.aggregate([
{ $match: { "lastModifiedDate":{$gt: lastHour} } },
{ $group: {
_id: {
month: { $month: "$lastModifiedDate" },
day: { $dayOfMonth: "$lastModifiedDate" },
year: { $year: "$lastModifiedDate" },
},
reject: { $sum: { $cond : [{ $in : ["$meta.ui.step", ["rejectedCheck","rejectedWrongDetails"]]}, 1, 0]} },
cases: { $sum: 1 }
} },
{$project:{Aborted:1, reject:1, cases:1, ratio: { $divide: [ "$reject", "$cases" ]}}
},
])
Here is a sample document:
{
"_id" : ObjectId("5f058e3feab5bf000668563f"),
"meta" : {
"ui" : {
"step" : "rejectedCheck",
"wasStepCompleted" : true,
"uiVersion" : "5.5.2"
},
"attributions" : []
},
"custom" : {
"CaseId" : "2070r41111",
"statusLastUpdate" : NumberLong(1594206118668)
},
"caseToken" : "hjkhjkhj.tyjggy",
"uuid" : "bd5c0b13-fe0d-4d94-a1b3-aeb66b1ad61d",
"createdDate" : ISODate("2020-07-08T09:13:35.699Z"),
"lastModifiedDate" : ISODate("2020-07-08T11:01:58.717Z")
}