面试题答案
一键面试- 统计每个用户访问次数的设计思路:
- 通过CouchDB的设计文档视图来实现,设计文档视图由map函数和可选的reduce函数组成。
- 利用map函数将数据库中的每条记录进行处理,以用户ID作为键,值可以设为1(代表一次访问)。
- 然后使用reduce函数对map函数输出的键值对进行聚合,统计每个用户的访问次数。
- map函数编写示例:
function (doc) {
if (doc.userID) {
emit(doc.userID, 1);
}
}
这里通过判断文档中有userID
字段,然后将userID
作为键,值设为1发射出去。
3. reduce函数编写示例:
function (keys, values, rereduce) {
return sum(values);
}
这里使用CouchDB内置的sum
函数对每个用户对应的所有值(在map函数中设为1)进行求和,最终得到每个用户的访问次数。rereduce
参数用于处理多次reduce操作的情况,这里简单的求和场景下暂不详细处理它。