繁体   English   中英

Neo4j-Cypher查询,用于基于时间戳查找所有下一个节点和关系

[英]Neo4j - Cypher query for finding all the next nodes and relationship based on timestamp

我在Neo4j中有下面的图。 在下图中, Subscriber是在不同时间执行了不同操作的实体。 动作是图形中的关系(“已Complained ,“已Recharged ,“已Enquired ,“ Clicked )。

我的要求是编写Cypher查询以获取所有Subscriber的所有下一个动作(例如:我希望查询查找所有已执行RechargeType=TT Recharged动作的所有Subscriber执行的下一个动作。我需要根据时间(ActionTime)获取下一个动作

我还提供了链接,可在编写以下查询后在返回的.xls中获取图形的全部数据。

图形数据

match(n)-[r]->(k)
return n, r, type(r), k

下面的查询返回其RechargeType ='TT'的所有订户的详细信息。 我需要的是密码查询,以基于“ ActionTime”获取这些订阅服务器立即采取的下一个操作,并根据所执行的操作(重新充电,单击,投诉,要求)对它们进行分组。

查询:match(n:Subscriber)-[r:Recharged]->(k)其中r.RechargeType ='TT'返回n,r,type(r),k;

在此处输入图片说明

请让我知道是否需要其他详细信息/解释才能回答我的问题。

编辑:图形数据已被修改,使得所有执行的动作的动作时间相同(在这种情况下为关系),并且已修改的图形图像也已上传。

图形

以下查询是我的问题的答案。

MATCH (n) with n, collect(n.msisdn) as list 
Match (n) WHERE n.msisdn IN list
MATCH (n)-[r]->(k) WHERE r.ActionType='TT'
WITH n, MIN(r.ActionTime) as min
MATCH (n)-[rout]->() WHERE rout.ActionTime > min
WITH n, rout
ORDER BY rout.ActionTime
WITH n, COLLECT(rout)[0] AS r
RETURN {
node: n,
outgoing:
  { relationship: TYPE(r), 
    node: ENDNODE(r),
    rType: r.ActionType,
    rTime: r.ActionTime,
    rChannel: r.ContactChannel
  }
  } AS result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM