我试图建立一个查询,返回两个字段之间的差异。 这是我收藏的文件:
NA
我正在尝试获取[
{ _id: 1, type: 'in', amount: 10 },
{ _id: 2, type: 'in', amount: 5 },
{ _id: 3, type: 'out', amount: 7}
]
:“入”金额减去“出”金额的总数。
输出应类似于:
balance
这是我尝试做的事情:
{ ..., total: 8 } ( (10 + 5) - 7 )
这仅输出每种类型的总数: 在-> 15, 出来-> 7
如何在以后的阶段中发现以上结果的差异?
提前谢谢
答案 0 :(得分:0)
$group
,其中_id
为null
,并使用$cond
将值设为正或负。具体来说,如果类型不是in
,则可以使用$multiply
将$total
乘以-1
。像下面这样的东西应该起作用:
db.aggregate([
{
$group: {
_id: '$type',
total: { $sum: '$amount' }
}
},
{
$group: {
_id: null,
total: { $sum: { $cond: {
if: { $eq: [ '$_id', 'in']},
then: '$total',
else: { $multipy: [ '$total', -1 ]}
}}}
}
}
])