我希望通过“user_id”,“real_currency_spend”和“paid_currency”来汇总“paid_amount”的总和。
这个想法是按用户按货币类型获得总计(以避免用美元,英镑等计算日元“paid_amount”。
当前代码:
{$match: {"paid_currency_type": "real_currency", "paid_amount": {$gt: 0}}}
{$group: {_id:"$user_id", total: {$sum : "$paid_amount"}}}
当前输出:
_id: 1121749754875670248
total: #.##
所需的输出:
_id: ##### (equal to user_id)
USD: #.##
Yen: #.##
Cur: #.##
使用real_currency_name中的每种货币类型构成字段名称,构成字段值的集合中的每个用户总数。
理想情况下,我不希望使用$push
将每种ID的货币放入数组格式,但如果必须这样做,则必须完成。
答案 0 :(得分:0)
我是MongoDB的新手,但我会选择$project并使用条件语句(请注意代码未选中,只是“提示”):
{$match: {"paid_currency_type": "real_currency", "paid_amount": {$gt: 0}}}
{$group: {_id:"$user_id", curr: 'real_currency', total: {$sum : 'paid_amount'}}
{$project: {_id:'$_id',USD:{{$cond: [{$eq:{'$curr', 'USD']}, '$total', $multiply[$total,$change.usd.real_currency]}},
Yen:{ you know what I mean ;-)},
Cur:{}}}
请注意我使用了外部对象$ change,它将包含货币的变化率。我是MongoDB的新手,所以我不知道如何在你的聚合中添加一个外部变量(可能只是像我一样使用它们,但不确定,抱歉)。
如果您正在为每种货币运行汇总,那么应该更容易,忘记我写的条件运算符并获得$ project的想法并显示三种货币(一种来自数据,另一种是$ multiply的变化率)。
希望这有帮助!