我正试图将我的数据按日,周,月和年分组在单个堆积线中。我在单独的字段中有日期,星期数,月份和年份。但是我无法弄清楚如何在单个流程中进行组聚合。 下面是示例json:
{
"Ctrans" : {
"status" : "active"
},"Day-month" : "25-9","Month" : 9,"Year" : 2019,"Week" : 38
}
我对此管道的查询:
db.getcollection("transaction").aggregate(
[
{
"$lookup" : {
"from" : "customer","localField" : "pB.phone","foreignField" : "phone","as" : "Ctrans"
}
},{
"$unwind" : {
"path" : "$Ctrans","includeArrayIndex" : "arrayIndex","preserveNullAndEmptyArrays" : false
}
},{
"$project" : {
"date" : {
"$dateFromString" : {
"dateString" : "$createdAt","onError" : "$date"
}
},"Weekdate" : {
"$dateFromString" : {
"dateString" : "$createdAt","Ctrans.status" : 1.0,"createdAt" : 1.0
}
},{
"$project" : {
"date" : {
"$dateToParts" : {
"date" : "$date"
}
},"week" : {
"$week" : "$Weekdate"
},"Ctrans.status" : 1.0
}
},{
"$project" : {
"Day-month" : {
"$concat" : [
{
"$toString" : "$date.day"
},"-",{
"$toString" : "$date.month"
}
]
},"Month" : "$date.month","Year" : "$date.year","Week" : "$week",{
"$group" : {
"_id" : {
"Today" : "$Day-month","Status" : "$status"
},"Total" : {
"$sum" : 1.0
}
}
}
],{
"allowDiskUse" : false
}
);
我旨在通过(Day-month,status),(month,(year,(week,status)
对进行分组,并分别获取每个配对组的 count 。