首页 > 代码库 > MongoDB group 数据不同字段distinct问题解决办法
MongoDB group 数据不同字段distinct问题解决办法
近日被mongoDB的聚合难住了,条件:
1、表中有字段mac,pv,ip,dates,type
2、要求,根据ip来group,计算pv合计,不重复的mac数,不重复的ip数
3、下面是解决办法,说明:MongoDB权威指南中使用的是对象,即"macs":{},然后在reduce里面用 in来查找,prev.macs[obj.mac]=""来添加,容易出现Unexpected number错误
现在改成数组,并且在finalize 中清除,感觉很方便
1 db.test.group({ 2 "key":"ip", 3 "initial":{"mac":0,"pv":0,"ip":0,"macs":[],"ips":[]}, 4 "$reduce":function(obj,prev){ 5 if(prev.macs.indexOf(obj.mac)<0){ 6 prev.mac = prev.macs.push(obj.mac); 7 } 8 if(prev.ips.indexOf(obj.ip)<0){ 9 prev.ip = prev.ips.push(obj.ip);10 }11 prev.pv+=obj.pv;12 },13 "finalize":function(prev){14 prev.macs=[];15 prev.ips=[];16 },17 "condition":{"dates":"2014-05-09","type":"type1"}18 });
如果有更好的办法,烦请留言,共同探讨
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。