MST

星途 面试题库

面试题:CouchDB视图Map函数优化及数据提取策略

在CouchDB中有海量文档,文档结构为{"category":"电子产品","product_info":{"name":"手机","price":5000,"features":["5G","高清屏"]},"reviews":[{"rating":4,"comment":"不错"},{"rating":3,"comment":"一般"}]}。要求编写一个高效的Map函数,实现以下功能:1. 提取category、product_info中的name和price,以及reviews中rating大于等于4的评论内容。2. 阐述在面对海量数据时,该Map函数在性能优化方面采取了哪些策略。
46.8万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试

Map函数代码

function (doc) {
    if (doc.category && doc.product_info && doc.product_info.name && doc.product_info.price && doc.reviews) {
        var positiveReviews = [];
        for (var i = 0; i < doc.reviews.length; i++) {
            if (doc.reviews[i].rating >= 4) {
                positiveReviews.push(doc.reviews[i].comment);
            }
        }
        emit(doc._id, {
            category: doc.category,
            name: doc.product_info.name,
            price: doc.product_info.price,
            positiveReviews: positiveReviews
        });
    }
}

性能优化策略

  1. 减少不必要计算:首先通过if语句检查必要的字段是否存在,避免在缺失关键字段的文档上进行无意义的处理,减少无效计算。
  2. 避免中间数据存储:在处理reviews数组时,直接筛选出符合条件的评论并存储,而不是先存储所有评论再进行筛选,减少内存占用。
  3. 高效的遍历方式:采用简单的for循环遍历reviews数组,这种方式在遍历数组时效率较高,相比于一些高级的数组遍历方法(如forEach等),性能更优。