使用MongoDB进行漏斗分析



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

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

我想创建一个报告来显示一个特定的漏斗:

例如:漏斗是:event1->事件2->事件3我想找到的计数:

  1. 事件1
  2. 事件1然后事件2
  3. 事件1,然后事件2,然后事件3

并且该会话也被考虑,即发生在单个会话中。注意:我只想明确一点,我希望能够创建我定义的任何漏斗,并能够为其创建报告。

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

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

其中,每个生成的文档都将包含sessionId和eventNames列表。根据需要将其他字段添加到$group结果中。我想在管道中检测所需序列的逻辑会很复杂,所以你可以考虑将结果保存到一个不同的集合中,你可以在空闲时检查它。2.6的特点是一个新的CCD_ 2运算符,仅用于此类场合。

相关内容

  • 没有找到相关文章

最新更新