为了账号安全,请及时绑定邮箱和手机立即绑定

在Mongo数据库里怎么统计留存率呢?

在Mongo数据库里怎么统计留存率呢?

交互式爱情 2019-04-13 08:45:57
首先,用户注册的日志是在一个集合(userRegister)里,用户登录的日志是在另一个集合(playerLogin)里.集合里面都有玩家的账号userName.怎么去统计,某一天注册的人,有多少人在第二天登陆过,有多少人在第三天登陆过,依次...这个统计应该是每一天凌晨过后,开始这样,每一天的去统计...可我不知道怎么去实现,求大神指导.
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

方案1:在playerLogin表,加上每一个User对应的注册时间。然后用mapReduce统计。
方案2:使用Python或其他语言的驱动读出两个表的数据,然后统计。
其中方案1的统计代码可以是:
varmapFunc=function(){
varmilliSeconds=this.loginDate-this.registerDate//相减就是时间差(毫秒)
varday=Math.floor(milliSeconds/1000)//如果00:00而不是24小时后算第二天的话,需要另外的公式
emit(day,this.username);
};
varreduceFunc=function(keys,values){
returnvalues.filter(function(value,index,self){
returnself.indexOf(value)===index;
}).length//返回不同用户名的个数
};
然后就可以用db.playerLogin.mapReduce(mapFunc,reduceFunc,{out:"map_reduce_output"})进行统计,其中map_reduce_output是输出结果的集合名称。
                            
查看完整回答
反对 回复 2019-04-13
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

在userRegister表里找到用户的注册日期,然后根据userName和登录日期(注册日期+1,+2...)2个字段去playerLogin里面找有没有存在这个cursor
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 352 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信