MST

星途 面试题库

面试题:CouchDB中Reduce函数对混合数据类型进行分类聚合

给定CouchDB中的文档数据,其中包含不同类型的数据,如字符串类型的类别字段和数值类型的销量字段。要求使用Reduce函数按类别对销量进行聚合统计,即统计每个类别下的总销量。阐述详细的实现步骤,包括Map函数和Reduce函数的设计,并给出关键代码。
24.9万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试

实现步骤

  1. Map函数设计
    • 输入:CouchDB中的文档数据。
    • 功能:提取文档中的类别字段和销量字段,并将类别作为键,销量作为值输出。
  2. Reduce函数设计
    • 输入:Map函数输出的键值对,其中键为类别,值为销量。
    • 功能:对相同类别的销量进行累加,得到每个类别下的总销量。

关键代码

  1. Map函数
function (doc) {
    if (doc.category && doc.sales) {
        emit(doc.category, doc.sales);
    }
}
  1. Reduce函数
function (keys, values, rereduce) {
    return sum(values);
}

这里假设CouchDB支持内置的sum函数用于对数值数组求和。如果不支持,可自行实现sum函数,例如:

function sum(arr) {
    return arr.reduce(function (acc, val) {
        return acc + val;
    }, 0);
}