【发布时间】:2021-03-04 06:11:37
【问题描述】:
尝试获取每个用户的各种状态的计数和过期项目的计数。 以下是示例文档:
[{
_id:"12324332432",
caseInd:"TASK123",
TaskId:"12345",
dueDate:ISODate("2021-03-22T00:00:00Z"),
assingee:"ABC",
status:"IN_PROGRESS",
completionDate:null
},
{
_id:"12324332433",
caseInd:"TASK124",
TaskId:"12345",
dueDate:ISODate("2021-03-01T00:00:00Z"),
assingee:"CDE",
status:"IN_PROGRESS",
completionDate:null
},
{
_id:"12324332434",
caseInd:"TASK125",
TaskId:"12345",
dueDate:ISODate("2021-03-31T00:00:00Z"),
assingee:"ABC",
status:"COMPLETED",
completionDate:ISODate("2021-03-01T00:00:00Z")
}...]
使用聚合,我想获取每个用户的任务数(已完成、进行中和过期)。 喜欢
[{
_id : ABC ,
data: [
{status:"Completed", count:15},
{status:"InProgress", count:3},
{status:"Overdue", count:3}]
},{
_id : CDE,
data: [
{status:"Completed", count:5},
{status:"InProgress", count:1},
{status:"Overdue", count:0}]
}]
我已经厌倦了这个解决方案,但不确定如何包括过期计数。
db.colName.aggregate([ {$project: {_id:0,
dueDateIn:{$divide:[{$subtract:[new Date(),$dueDate]},86400000]},
status:1,
assignee:1
}
}, {
$group:{
_id:{"assignee":"$assignee", "status":"$status"},
count:{$sum:1}
},
$group:{
_id:"$_id.assignee" , result:{$push:{"status":"$_id.status", count:"$count"}}
}
}]) ```
Any help would be highly appreciated. Thank you.
【问题讨论】:
标签: mongodb aggregation