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}]}

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

java mongodb

7UP☆波 10 years, 4 months ago
钢铁同志的咆哮 answered 10 years, 4 months ago

Your Answer