首页 > mongodb 数据统计(留存率) 应该怎么实现?

mongodb 数据统计(留存率) 应该怎么实现?

在玩家的登陆日志里记录了, 玩家账号, 登陆时间, 注册时间.(当然还有别的秒级时间和玩家信息.)

数据大概是这样的:

{"_id":xxxx,"userName":"zhangsan","loginTime":2015年1月1日,"createTime":2015年1月1日......}
{"_id":xxxx,"userName":"lisiaaaa","loginTime":2015年1月2日,"createTime":2015年1月2日......}
{"_id":xxxx,"userName":"zhangsan","loginTime":2015年1月2日,"createTime":2015年1月1日......}
{"_id":xxxx,"userName":"lisiaaaa","loginTime":2015年1月3日,"createTime":2015年1月2日......}
{"_id":xxxx,"userName":"lisiaaaa","loginTime":2015年1月4日,"createTime":2015年1月2日......}
{"_id":xxxx,"userName":"zhangsan","loginTime":2015年1月4日,"createTime":2015年1月1日......}
{"_id":xxxx,"userName":"zhangsan","loginTime":2015年1月5日,"createTime":2015年1月2日......}

想统计玩家的留存率.是根据某一天玩家的注册量来作为起始点.

比如 1日 新注册了1000个玩家, 第二日这1000个玩家有900个登陆了, 第三日这1000个玩家只登陆了500个... 希望看到的数据是这样的

{"id":2015年1月1日,"data":[{day:2015年1月1日, count:1000},{day:2015年1月2日, online:9000},{day:2015年1月3日, online:500}]}

这是1日的新注册玩家的留存情况. 每天肯定都会有新玩家注册, 我们关注的留存就是当天新注册玩家在以后每天的登陆情况, 所以最终呈现的应该是这个样子..

比如截止到 2015年1月5日 的留存统计结果:

{"id":2015年1月1日,"data":[{day:2015年1月1日, count:1000},{day:2015年1月2日, online:900},{day:2015年1月3日, online:500},{day:2015年1月4日, count:400},{day:2015年1月5日, online:500}]}
{"id":2015年1月2日,"data":[{day:2015年1月2日, count:1200},{day:2015年1月3日, online:900},{day:2015年1月4日, count:600},{day:2015年1月5日, online:300}]}
{"id":2015年1月3日,"data":[{day:2015年1月3日, count:2000},{day:2015年1月4日, count:700},{day:2015年1月5日, online:500}]}
{"id":2015年1月4日,"data":[{day:2015年1月4日, count:500},{day:2015年1月5日, online:200}]}
{"id":2015年1月5日,"data":[{day:2015年1月5日, count:4000}]}

不知道该怎么实现.. 在此求助各位. 跪谢...


这样设计:

{
    player: {
        id: 123,
        name: 'zhangsan',
        register_time: 
    },
    login_time: 
}

然后aggregate
先按register_time筛选,再按login_time分组

估计你还是不会……

另外,我觉得,不要这么做,计算量大


http://docs.mongodb.org/manual/aggregation/

【热门文章】
【热门文章】