首页 > 代码库 > MongoDB 聚合之 MapReduce

MongoDB 聚合之 MapReduce

理解聚合

  在关系型数据库中,聚合是根据数据记录的某个字段对数据记录进行合并。比如需要从订单明细表统计每个订单的金额,通常需要经过下面几个步骤:

  • 从订单明细表提取每条记录的订单号和金额;
  • 根据订单号对金额分组,使每组金额具有相同的订单号;
  • 对每组金额进行求和运算,结果按 订单号-总金额 格式返回;

理解 MapReduce

  在 MapReduce 中,map 函数所做的包括了上述过程的前两步,其中 emit 函数负责第一步的实现。map 函数最终返回的结果是多个 Key-Values 集合,注意:这里一个键对应多个值,也就是前面说的一个订单号对应多个金额。

  接下来,map 的返回值作为 reduce 函数的参数,由 reduce 对每组数据进行合并,也就是上述过程的第三步求和。