【问题标题】:Sum from multiple collections in mongodbmongodb中多个集合的总和
【发布时间】:2019-02-13 19:40:42
【问题描述】:

我有两个集合,即 col1 和 col2。
col1 有如下字段:
_id
用户
支付

Col2 读起来像
_id
用户
金额


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

的总和

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

    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 可以提供帮助。还有thisthis

    【讨论】:

    • 您能进一步解释一下吗?每个集合都有同一用户的多个条目
    • 您的预期输出是什么?每个用户的金额和支出的总和?还是每个人的总金额和支出?
    • 一个用户的所有支出和金额的总和
    猜你喜欢
    • 2022-07-20
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多