mongodb中两个分组值的总和?
现在,我如何计算我帐户中的余额金额,如(C)之和-(D)之和=650?对于这种聚合操作类型,十进制操作符将派上用场。您可以使用它来计算给定mongodb中两个分组值的总和?,mongodb,Mongodb,现在,我如何计算我帐户中的余额金额,如(C)之和-(D)之和=650?对于这种聚合操作类型,十进制操作符将派上用场。您可以使用它来计算给定Tran_Type值的总和,因此您可以将此逻辑注入管道阶段,在该阶段您将对所有文档进行分组(即,按空键分组)。您还需要使用一个操作符来计算与算术操作符的差异 下面的示例将演示此概念。运行管道操作以获得所需的结果: 填充测试文档: Trans_Id Account_Id Amount Tran_Type 1 H
Tran_Type
值的总和,因此您可以将此逻辑注入管道阶段,在该阶段您将对所有文档进行分组(即,按空键分组)。您还需要使用一个操作符来计算与算术操作符的差异
下面的示例将演示此概念。运行管道操作以获得所需的结果:
填充测试文档:
Trans_Id Account_Id Amount Tran_Type
1 HA1001 1000 C
2 HA1001 50 D
3 HA1001 100 C
4 HA1001 400 D
聚合管道:
db.test.insert([
{
"Trans_Id": 1,
"Account_Id": "HA1001",
"Amount": 1000,
"Tran_Type": "C"
},
{
"Trans_Id": 2,
"Account_Id": "HA1001",
"Amount": 50,
"Tran_Type": "D"
},
{
"Trans_Id": 3,
"Account_Id": "HA1001",
"Amount": 100,
"Tran_Type": "C"
},
{
"Trans_Id": 4,
"Account_Id": "HA1001",
"Amount": 400,
"Tran_Type": "D"
}
])
db.test.aggregate([
{
"$group": {
"_id": null,
"total_C": {
"$sum": {
"$cond": [
{ "$eq": [ "$Tran_Type", "C" ] },
"$Amount", 0
]
}
},
"total_D": {
"$sum": {
"$cond": [
{ "$eq": [ "$Tran_Type", "D" ] },
"$Amount", 0
]
}
}
}
},
{
"$project": {
"balance": {
"$subtract": ["$total_C", "$total_D"]
}, "_id": 0
}
}
])
样本输出:
db.test.insert([
{
"Trans_Id": 1,
"Account_Id": "HA1001",
"Amount": 1000,
"Tran_Type": "C"
},
{
"Trans_Id": 2,
"Account_Id": "HA1001",
"Amount": 50,
"Tran_Type": "D"
},
{
"Trans_Id": 3,
"Account_Id": "HA1001",
"Amount": 100,
"Tran_Type": "C"
},
{
"Trans_Id": 4,
"Account_Id": "HA1001",
"Amount": 400,
"Tran_Type": "D"
}
])
db.test.aggregate([
{
"$group": {
"_id": null,
"total_C": {
"$sum": {
"$cond": [
{ "$eq": [ "$Tran_Type", "C" ] },
"$Amount", 0
]
}
},
"total_D": {
"$sum": {
"$cond": [
{ "$eq": [ "$Tran_Type", "D" ] },
"$Amount", 0
]
}
}
}
},
{
"$project": {
"balance": {
"$subtract": ["$total_C", "$total_D"]
}, "_id": 0
}
}
])
如果我还有一个列属于类别,例如“Cat1”、“Cat2”,还需要一个帮助。现在我如何才能获得余额类别?HassanAhamed看起来原来的问题已经解决了,不是吗?至于“下一个”问题,那将是一个,考虑单独发布。