使用MongoDB进行漏斗分析?

时间:2014-04-28 06:54:49

标签: java mongodb mapreduce aggregation-framework bigdata

我有一个名为'event'的集合,它跟踪移动应用程序中的事件。 事件文档的结构是

{
  eventName:"eventA",
  screenName:"HomeScreen",
  timeStamp: NumberLong("135698658"),
  tracInfo:
       {
         ...,
         "userId":"user1",
         "sessionId":"123cdasd2123",
         ...
       }
}

我想创建报告以显示特定的渠道:

例如: 漏斗是:event1 - > event2 - > EVENT3 我想找到数:

  1. 事件1
  2. event1 then event2
  3. event1然后是event2,然后是event3
  4. 并且会话也被认为是在单个会话中发生的。 注意:只想明确,我希望能够创建我定义的任何渠道,并能够为其创建报​​告。

    谢谢..

1 个答案:

答案 0 :(得分:2)

您的解决方案很可能围绕这样的聚合:

db.event.aggregate([
    { $group: { _id: '$tracInfo.sessionId', events: { $push: '$eventName' } } }
])

每个生成的文档都包含一个sessionId和一个eventNames列表。根据需要将其他字段添加到$group结果中。我想在检测你想要的序列中的逻辑是非常多毛的,所以你可以考虑将结果保存到一个不同的集合中,你可以随意检查。 2.6仅适用于此类场合的新$out operator

相关问题