0

我希望通过“user_id”、“real_currency_spend”和“paid_currency”汇总“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 将货币放入数组格式,但如果必须这样做......必须这样做。

4

1 回答 1

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 的想法并显示三种货币(一种来自 data ,另一种使用 $multiply 表示变化的汇率)。

希望这可以帮助!

于 2013-10-25T08:51:22.290 回答