我有 3 收藏 作业,状态,受让人 。
作业 字段:[ _id,状态,受让人 ]
受让人 和 状态 字段:[ _id,名称 ]。
可以有多种与 状态 和 受让人 集合相关联的作业(通过{{1}链接) } field),没有嵌套或复杂的数据。
我需要查询所有分配_id
Assignees 是行 状态 是列,结合单元格是ids
,最后是 总计 计数。
为了帮助您想象,我附在图片下方。我是复杂的Mongo DB Aggregate框架的新手,请指导我实现查询。
注意:状态和受让人集合中的数据将是动态的。查询中没有预先确定。因此,行和列将来会动态增长,如果查询是分页,那么它将会有很大的帮助。我无法使用
count
,status
等硬编码'pending'
名称撰写查询。随着数据的增长,现有数据可能会发生变化,如'completed'
,'pending task'
。
以下是我的查询
'completed work'
以下是输出格式:
db.getCollection('Assignments').aggregate([
{
"$group": {
"_id": {
"assignee": "$assignee",
"statusId": "$statusId"
},
"statusCount": { "$sum": 1 }
}
},
{
"$group": {
"_id": "$_id.assignee",
"statuses": {
"$push": {
"statusId": "$_id.statusId",
"count": "$statusCount"
},
},
"count": { "$sum": "$statusCount" }
}
},
]);
预期输出为:
{
"_id" : "John",
"statuses" : {
"statusId" : "Pending",
"count" : 3.0
},
"count" : 3.0
}
{
"_id" : "Katrina",
"statuses" : [{
"statusId" : "Pending",
"count" : 1.0
},
{
"statusId" : "Completed",
"count" : 1.0
},
{
"statusId" : "Assigned",
"count" : 1.0
}],
"count" : 3.0
}
{
"_id" : "Collins",
"statuses" : {
"statusId" : "Pending",
"count" : 4.0
},
"count" : 4.0
}
关于如何将多个{
"_id" : "Katrina",
"Pending" : 1.0,
"Completed" : 1.0,
"Assigned" : 1.0,
"totalCount" : 3.0
}
用于不同statusId
作为键而不是单个文档中的值的任何想法。
答案 0 :(得分:0)
3days 23mins 30sec
后需要另一个@foreach($submits as $submit)
{{ $submit->pivot->created_at }} // to get the created_at
{{ $submit->pivot->updated_at }} // to get the updated_at
@endforeach
阶段,根据statusId字符串值计算状态数:
$group
最终聚合命令:
$unwind