面试题答案
一键面试Map - Reduce设计思路
- Map函数:
- 遍历数据库中的每个文档。
- 提取文档中的
type
字段作为键,值设为1。这样每个文档都会生成一个键值对,键是文档类型,值表示该类型的一个文档。
- Reduce函数:
- 接收Map函数生成的键值对,按键(文档类型)进行分组。
- 对每个组内的值(都是1)进行累加,得到每种类型文档的数量。
代码示例
- Map函数:
function (doc) {
if (doc.type) {
emit(doc.type, 1);
}
}
- Reduce函数:
function (keys, values) {
return sum(values);
}
在上述代码中,emit
函数用于输出键值对,sum
是CouchDB内置的用于对数组中的值求和的函数。实际使用时,将这些Map和Reduce函数作为参数传递给CouchDB的Map - Reduce查询接口,就可以统计每种类型文档的数量。