加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

mongodb 通过MapReduce统计用户Pv Uv

发布时间:2020-05-24 21:30:48 所属栏目:Java 来源:互联网
导读:mongodb 通过MapReduce统计用户Pv Uv

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

@Component
publicclassUserDaoImplextendsMongoBaseDaoimplementsUserDao{
publicvoidinsertRecord(UserVisitRecordrecord){
getMongoTemplate().insert(record);
}
publicvoidstatisUserPvUv(Stringdate){

Stringmap="function(){"
+"if(this.date=='"+date+"'){"
+"emit(this.date,{uv:1,pv:1,userIds:this.userId})"
+"}"
+"}";

Stringreduce="function(key,values){"
+"vartemp=newArray();"
+"varuserIds=newArray();"
+"for(i=0;i<values.length;i++){"
+"userIds=userIds.concat(values[i].userIds);"
+"}"
+"userIds.sort();"
+"for(i=0;i<userIds.length;i++){"
+"if(userIds[i]==userIds[i+1]){continue;}"
+"temp[temp.length]=userIds[i];"
+"}"
+"return{uv:temp.length,pv:userIds.length,userIds:userIds};"
+"}";

MapReduceOutputmapReduceOutput=getMongoTemplate().getCollection("userVisitRecord").mapReduce(map,reduce,"tmp",null);
DBCollectionresultColl=mapReduceOutput.getOutputCollection();
try{
DBCursorcursor=resultColl.find();
while(cursor.hasNext()){
DBObjectdbObject=cursor.next();
if(dbObject.get("value")!=null){
UserStaticModeluserStaticModel=newUserStaticModel();
userStaticModel.setUv(Math.round((double)((DBObject)dbObject.get("value")).get("uv")));
userStaticModel.setPv(Math.round((double)((DBObject)dbObject.get("value")).get("pv")));
List<String>userIds=(List)((DBObject)dbObject.get("value")).get("userIds");
Set<String>idSet=newHashSet<>(userIds);
userStaticModel.setUserIds(newArrayList(idSet));
userStaticModel.setDate(date);
getMongoTemplate().insert(userStaticModel);
}
}
}catch(Exceptione){
e.printStackTrace();
}finally{
resultColl.drop();
}
}

publicUserStaticModelfindStatic(Stringdate){
Queryquery=newQuery();
query.addCriteria(Criteria.where("date").is(date));
returngetMongoTemplate().findOne(query,UserStaticModel.class);
}
}
Stringmap="function(){"
+"if(this.date=='"+date+"'){"
+"emit(this.date,userIds:this.userId})"
+"}"
+"}";
Stringreduce="function(key,userIds:userIds};"
+"}";
emit(this.date,userIds:this.userId})
emit(this.date,{userId:this.userId})

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读