【发布时间】:2019-02-13 19:40:42
【问题描述】:
我有两个集合,即 col1 和 col2。
col1 有如下字段:
_id
用户
支付
Col2 读起来像
_id
用户
金额
我希望输出是支出 (来自 col1) 和金额 (来自 col2)
【问题讨论】:
我有两个集合,即 col1 和 col2。
col1 有如下字段:
_id
用户
支付
Col2 读起来像
_id
用户
金额
我希望输出是支出 (来自 col1) 和金额 (来自 col2)
【问题讨论】:
为什么不直接在两个集合中查找数据,然后将两个对象传递到一个函数中,这会增加总和? 像这样:
var sum = 0;
//do this for both collections
db.collection.find({}).forEach(function(obj){
sum+=obj.payout;
});
如果您想做的是获得每个不同用户的总和,您可以这样做:
var sumForUser = {};
//do this for both collections
db.collection.find({}).forEach(function(obj){
if ( sumForUser[obj.user] ) {
sumForUser[obj.user] += obj.payout;
else
sumForUser[obj.user] = obj.payout;
});
然后您将创建一个“sumForUser”对象,其中包含您想要为每个用户提供的总和。这将是用户求和的“地图”。
这也可以通过许多不同的方式完成,包括使用 reduce 函数和其他 mongoDB 函数,例如 MapReduce 等。 也许this 可以提供帮助。还有this 和this。
【讨论】: