mongodb pv uv ip 统计

db.runCommand(
        {mapReduce: 'access',
    map: function () {
            emit({createDate: this.createDate},{cookie: this.cookie,ip: this.ip,session: this.session,standingTime: this.standingTime})
    },
    reduce: function (key, values) {
        var keystr = JSON.stringify(key);
        if(!uvMap[keystr]){uvMap[keystr]={};};
        reduced = {pv:0,ip:0,uv:0,se:0,st:0};
        values.forEach(function (val) {
            if (val.cookie) {
                            reduced.pv += 1;
                            reduced.st += val.standingTime;
                            uvkey = val.cookie + '_' + val.ip;
                            if(!uvMap[keystr][uvkey]){uvMap[keystr][uvkey]=1;reduced.uv += 1; }
                            if(!ipMap[val.ip]){ipMap[val.ip]=1;reduced.ip += 1;}
                            if(!seMap[val.se]){seMap[val.se]=1;reduced.se += 1;}
            } else {
                reduced.pv += val.pv;
                reduced.ip += val.ip;
                reduced.uv += val.uv;
                reduced.se += val.se;
                                reduced.st += val.st;
            }
        });
        return reduced;
    }, 
           query: {"createDate":"2017-05-15"},
           out: { merge : "post_man" },
           scope: {uvMap: {},ipMap: {},seMap: {}},
           finalize: function (key, val) {
                   if (!val.cookie) {return val;}
                reduced = {pv: 1, se: 1, uv: 1,ip: 1, st:val.standingTime};
                return reduced;
            }
        
})
 

转载于:https://my.oschina.net/jj2050/blog/900584

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值