聚合路径中2个连接节点之间的关系属性,并返回具有聚合属性的新关联

时间:2016-10-12 17:40:42

标签: neo4j cypher

我有3个节点Customer,Phone,ID_Card。

下面是我的密码查询:

match p=((ph: Phone {Phone_ID : "3851308.0"})-[r:Customer_Send | Customer_used_ID | Customer_used_Phone *1..5]-(n2)) with p as p UNWIND relationships(p) as aaa return distinct aaa

这是Phone_ID 3851308.0的大型连接网络。

路径(p)中的所有关系都具有TXN_KEY,Send_Time,Pay_Time,Amount

等属性

现在,我需要找到一种方法来聚合路径(p)中2个连接节点之间的关系属性,并返回具有这些聚合属性的新关系。

例如,让我们考虑一个例子: 客户" 1000000000109533119"使用了他的ID" 10165649.0" 4次不同的交易4次。因此,与TXN_KEY,Send_Time,Pay_Time,Amount等属性将有4种不同的Customer_used_ID关系。我想要的只是返回一个单一关系,所有属性聚合为Count(Txn_Key),Min(Send_time),Min(pay_Time),Sum(Amount)。

所以,我想对路径(p)中的每2个连接节点做同样的事情。

1 个答案:

答案 0 :(得分:0)

以下是完成工作的Cypher查询:

MATCH p = (c:Customer {Galactic_ID : "1000000000275162734"}) - [r:Customer_Send|:Customer_used_ID|:Customer_used_Phone*1..5] - ()
WITH distinct(p) as p,[node IN NODES(p) WHERE node:Customer] AS customer_nodes
UNWIND customer_nodes AS c_node 
 MATCH (c_node) - [r1:Customer_at_Agent] - () 
Unwind relationships(p) as rr with r1,rr, Collect(distinct(rr)) +    Collect(distinct(r1)) as r2 with r2 as r2 Unwind r2 as r3
return startnode(r3),endnode(r3),SUM(r3.Amount),MIN(r3.PayTime),MIN(r3.SendTime),COUNT(TXN_KEY)