有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用MongoDB进行java漏斗分析?

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

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

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

例如: 漏斗是:事件1->;事件2->;事件3 我想找出以下几点:

  1. 事件1
  2. 事件1然后事件2
  3. 事件1、事件2和事件3

该会话也被认为是在单个会话中发生的。 注意:我只想说清楚,我希望能够创建我定义的任何漏斗,并能够为其创建报告


共 (1) 个答案

  1. # 1 楼答案

    您的解决方案可能围绕以下聚合展开:

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

    其中每个结果文档将包含一个sessionId和一个EventName列表。根据需要向$group结果中添加其他字段。我想象在管道中检测你想要的序列的逻辑是相当多毛的,所以你可以考虑把结果保存到一个不同的集合中,你可以在空闲时进行检查。2.6为此类场合提供了一个新的^{} operator