MST

星途 面试题库

面试题:CouchDB中Reduce函数如何实现简单的数值聚合

假设在CouchDB的文档中有一系列表示商品价格的数值字段,如何编写一个Reduce函数来计算这些商品价格的总和?请写出相应的Reduce函数代码,并简要说明其工作原理。
15.4万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试

在CouchDB中,Reduce函数用于对Map函数生成的键值对进行汇总。以下是计算商品价格总和的Reduce函数代码:

function (keys, values, rereduce) {
    if (rereduce) {
        return values.reduce(function (sum, subSum) {
            return sum + subSum;
        }, 0);
    } else {
        return values.reduce(function (sum, price) {
            return sum + price;
        }, 0);
    }
}

工作原理

  1. keys:是Map函数输出的键数组,在计算总和时,我们不需要关心这些键。
  2. values:是Map函数输出的对应于键的商品价格值数组。
  3. rereduce:是一个布尔值,当为true时,表示CouchDB正在进行二次归约(在分布式环境下,对各个分区的局部汇总结果再进行汇总)。

在第一次调用(rereducefalse)时,函数直接对values数组中的价格进行累加,初始值设为0。

在二次归约(rereducetrue)时,values数组中的元素是各个局部汇总结果,函数同样对这些局部汇总结果进行累加,最终得到所有商品价格的总和。