我在Neo4j中有下图。在下图中,Subscriber
是在不同时间执行不同操作的实体。操作是图表中的关系(Complained
,Recharged
,Enquired
,Clicked
)。
我的要求是编写Cypher查询以获取所有Subscriber
的所有下一步操作(例如:我希望查询找到所有Subscriber
所执行的下一步操作使用Recharged
完成RechargeType=TT
操作。我需要根据时间(ActionTime)获取下一个操作
在编写以下查询后,我还提供了在.xls中返回我的图表的全部数据的链接。
match(n)-[r]->(k)
return n, r, type(r), k
以下查询返回RechargeType =' TT'的所有订阅者的详细信息。我需要的是cypher查询,以便根据' ActionTime'来获取这些订阅者立即采取的下一步行动。并按照所采取的行动对它们进行分组(Recharged,Clicked,Complained,Inquired)。
查询: match(n:Subscriber) - [r:Recharged] - >(k)其中r.RechargeType =' TT' return n,r,type(r),k;
如果我的问题有待进一步解释,请告诉我。
编辑:图形数据已被修改,使所有操作的动作时间相同(本例中为关系),并且已修改已修改的图形图像。
答案 0 :(得分:0)
以下查询是我的问题的答案。
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;