node.js - mongodb中多个集合的总和
问题描述
我有两个集合,即 col1 和 col2 。
col1 具有如下字段:
_id
user
payout
Col2 读取为
_id
user
amount
我希望输出是支出(来自 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 等。也许这会有所帮助。还有这个和这个。
推荐阅读
- python - Numpy vs regular array in python
- azure-cosmosdb - 如何在 CosmosDB 中使用 Gremlin 找到两个顶点之间的边
- r - R - 来自 withReplicates 结果的拟合数据 rq 的置信区间?
- php - 覆盖 required_without_all laravel 的单个消息
- javascript - Function unable to get called in click event of jQuery
- ionic-framework - 离子4:
没有按预期工作 - node.js - How to pull status response codes from the backend and use it in the frontend?
- laravel - VueJs Props not read when setting initial value in data
- php - 解密后无法读取变量和其他函数
- c - Test Cases Failure on Hackerrank