我有3到4个收藏
在“用户”表中,我们有多种类型的用户,例如学生,父母。
在付款表中,用户付款明细包含部分或全部金额的付款明细。
在分支中,表具有分支详细信息。
我正在尝试根据分支机构和等级查找报告。
示例用户表:
[
{
"_id": "5b372ea5b0103b4ab2409ea6",
"name" : "User 1",
"role" : "student",
"enrollmentCode": "X1",
"branchId": "5b36388c7e50f13e845346e2",
"classId" : "5b36388c7e50f13e84534343"
},
{
"_id": "5b372ea5b0103b4ab2409ea7",
"name" : "User 2",
"role" : "student",
"enrollmentCode": "X2",
"branchId": "5b36388c7e50f13e845346e2",
"classId" : "5b36388c7e50f13e8453433d"
},
{
"_id": "5b372ea5b0103b4ab2409ea9",
"name" : "User 3",
"role" : "student",
"enrollmentCode": "X3",
"branchId": "5b36388c7e50f13e845346e2",
"classId" : "5b36388c7e50f13e8453433x"
}
]
付款表:
[
{
"_id": "5b372ea5b0103b4ab2409e32",
"userId": "5b372ea5b0103b4ab2409ea6",
"enrollmentCode": "X1",
"branchId": "5b36388c7e50f13e845346e2",
"classId" : "5b36388c7e50f13e8453433d",
"receivedAmount": 5000,
"balanceAmount": 2000,
"paidStatus": false
},
{
"_id": "5b372ea5b0103b4ab2409e32",
"userId": "5b372ea5b0103b4ab2409ea6",
"enrollmentCode": "X1",
"branchId": "5b36388c7e50f13e845346e2",
"classId" : "5b36388c7e50f13e8453433d",
"receivedAmount": 1000,
"balanceAmount": 500,
"paidStatus": false
},
{
"_id": "5b372ea5b0103b4ab2409e32",
"userId": "5b372ea5b0103b4ab2409ea7",
"classId" : "5b36388c7e50f13e8453433d",
"enrollmentCode": "X2",
"branchId": "5b36388c7e50f13e845346e2",
"receivedAmount": 1000,
"balanceAmount": 500,
"paidStatus": true
}
]
分支表
[
{
"_id": "5b36388c7e50f13e845346e2",
"name": "Test 1"
},
{
"_id": "5b36388c7e50f13e845346e2",
"name": "Test 2"
},
{
"_id": "5b36388c7e50f13e845346e2",
"name": "Test 3"
}
]
类表与我们相同。
我的查询:
db.users.aggregate([ { $match : { role : "student"}} , { $group : { _id : "$student.branchId", totalStudents : { $sum : 1 }}}, {$lookup: {from: "branches", localField: "_id", foreignField: "_id", as: "branches"}}, {$project : { _id : 1, totalStudents : 1, 'branches.branchCode' : 1, 'branches.name' :1}}] )
我可以获取学生人数,分支机构名称以及除以外的所有信息。我不知道要按付款方式分组并汇总金额。
我的查询输出:
[{ "_id" : ObjectId("5b89161d1326f1646fabb59e"), "totalStudents" : 295, "receivedAmount" : 1000, "branches" : [ {
"name" : "abcd" } ] }
{ "_id" : ObjectId("5b47343d55b8344687674b7b"), "totalStudents" : 104, "branches" : [ { "name" : "xxxx" } ] }]
预期输出:
[
{
"_id": ObjectId("5b89161d1326f1646fabb59e"),
"totalStudents": 295,
"receivedAmount" : 12345,
"paidStudents" : 1,
"branches": [
{
"name": "abcd"
}
]
}
{
"_id": ObjectId("5b47343d55b8344687674b7b"),
"totalStudents": 104,
"receivedAmount" : 12345,
"paidStudents" : 1,
"branches": [
{
"name": "xxxx"
}
]
}
]