文档章节

来源url统计

jiejie2050
 jiejie2050
发布于 2017/05/24 17:56
字数 221
阅读 16
收藏 0

db.runCommand({    
    mapReduce: 'access',
    map: function() { 
        emit({createDate:this.createDate,app:this.app,memberId:this.memberId,mallId:this.mallId},
        {cookie:this.cookie,ip:this.ip,source:this.source,refUrl:this.refUrl})    
     },
    reduce: function(key, values){
        reduced = {pv:0,uv:0,ip:0,rpv:0,urlMap:{}};
        var keystr = ''; 
        for(var k in key){
            keystr += key[k];
        }
        urlMap = {};
        if(!urlMap[keystr]){
            uvMap[keystr]={};
        }
        if(!ipMap[keystr]){
            ipMap[keystr]={};
        }
        
        values.forEach(function(val){
                
            if(val.cookie){
                 reduced.pv += 1;    
                 if(val.source=='refresher'){reduced.rpv += 1;}
                 uvkey = val.cookie+'_'+val.ip;
                 if(!uvMap[keystr][uvkey]){uvMap[keystr][uvkey]=1;reduced.uv += 1; }
                                 if(!ipMap[keystr][val.ip]){ipMap[keystr][val.ip]=1;reduced.ip += 1;}
                 if(val.refUrl){
                    if(urlMap[val.refUrl]){urlMap[val.refUrl] += 1;}
                                        else{urlMap[val.refUrl] = 1;}
                                 }
            }else{
               reduced.pv += val.pv;
               reduced.rpv += val.rpv;
               reduced.pv += val.pv;
               reduced.ip += val.ip;
               for(var k in val.urlMap){
                    if(urlMap[k]){urlMap[k] += val.urlMap[k];}
                                        else{urlMap[k] = val.urlMap[k];}    
               }
            }
                });
        reduced.urlMap = urlMap;
        return reduced;
        },
           query: {"createDate":"2017-05-15","mallId" : "42"},
           out: { merge : "post_man_new" },
           scope: {uvMap: {},ipMap: {}},
           finalize: function (key, val) {
                if (!val.cookie) {
                                reduced = {pv:0,uv:0,ip:0,rpv:0,maxUrl:''};
                                reduced.pv = val.pv;
                                reduced.rpv = val.rpv;
                                reduced.pv = val.pv;
                                reduced.ip = val.ip;
                                var keyset = Object.keys(val.urlMap);
                                var max =val.urlMap[keyset[0]];  
                                reduced.maxUrl =keyset[0];              
                                for (var i = 1; i < keyset.length; i++) {  
                                        if (val.urlMap[keyset[i]] > max) {  
                                                max = val.urlMap[keyset[i]];
                                                reduced.maxUrl = keyset[i];
                                        }  
                          
                                }   
                            
                                return reduced;
                    }
                reduced = {pv:1,ip:1,uv:1,rpv:1,maxUrl:""};
                return reduced;
    }
})

© 著作权归作者所有

上一篇: mybatis常用
jiejie2050
粉丝 2
博文 76
码字总数 9570
作品 0
广州
私信 提问
类似站长统计的数据库应该怎么设计比较合理?

像站长统计的功能,统计所有到访的独立ip,然后又可以显示到访的详细信息包括来源URL,和所有ip信息,数据库应该怎么来设计比较合理

吴晓林
2012/03/19
217
1
mysql多表查询问题 三个表查询其中选定的字段

看到问题的朋友们好。。我有3个表,分别是 pre_portal_article_content 门户文章内容表 字段名 数据类型 默认值 允许非空 自动递增 备注 cid int(10) unsigned NO 是 内容ID aid mediumint(...

wusanbo
2014/09/14
1K
1
网站pv uv 停留时间 等统计

日志中心收集网站访问数据内容 基于nginx记录用户cookie的行为,进行分析 一、用户cookie。 需要创建3个cookie文件gtra、gtrb、gtrc,其中gtra用来追踪用户,gtrb和gtrc联合来标记一次会话。...

闪电
2016/11/28
104
0
52itstyle/short_url

短链接生成器 前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数、下载量、来源以及时间等等。 网...

小柒2012
2018/03/20
0
0
一个简单的 waf 模块--App-Waf

App-waf,一个简单的 waf 模块。 用来实时探测 web 非法访问,统计非法访问的 ip,web状态,访问 url,来源 web url。结合 iptables 可以实现实现实时封禁。 实例说明见 example 目录(包括日...

桔子
2017/01/05
429
2

没有更多内容

加载失败,请刷新页面

加载更多

归并排序

import java.util.Arrays;/** * Created by chengxiao on 2016/12/8. */public class MergeSort { public static void main(String []args){ int []arr = {9,8,7,6,......

暗中观察
31分钟前
0
0
面试爱奇艺,竟然挂在第5轮……

今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 <br> 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? ...

上海小胖
今天
5
0
Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
3
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部