首页 > 解决方案 > mongodb中多个集合的总和

问题描述

我有两个集合,即 col1 和 col2 。
col1 具有如下字段:
_id
user
payout

Col2 读取为
_id
user
amount


我希望输出是支出(来自 col1)和金额(来自 col2)的总和

标签: node.jsmongodbmongoose

解决方案


为什么不直接在两个集合中查找数据,然后将两个对象都传递到一个函数中,这会增加总和?像这样的东西:

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 等。也许会有所帮助。还有这个这个


推荐阅读