MST

星途 面试题库

面试题:CouchDB中Reduce函数在统计文档数量上的应用

假设在CouchDB中有一个包含多种类型文档的数据库,每个文档有一个 'type' 字段来标识类型。请描述如何使用Reduce函数统计每种类型文档的数量,并给出相应的Map - Reduce设计思路及可能的代码示例。
48.1万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试

Map - Reduce设计思路

  1. Map函数
    • 遍历数据库中的每个文档。
    • 提取文档中的 type 字段作为键,值设为1。这样每个文档都会生成一个键值对,键是文档类型,值表示该类型的一个文档。
  2. Reduce函数
    • 接收Map函数生成的键值对,按键(文档类型)进行分组。
    • 对每个组内的值(都是1)进行累加,得到每种类型文档的数量。

代码示例

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

在上述代码中,emit 函数用于输出键值对,sum 是CouchDB内置的用于对数组中的值求和的函数。实际使用时,将这些Map和Reduce函数作为参数传递给CouchDB的Map - Reduce查询接口,就可以统计每种类型文档的数量。