Neo4J - 返回一个独特的关系,它聚合了相同节点之间的几个实现

时间:2016-08-19 12:41:47

标签: neo4j cypher

我有一个非常奇特的图形数据库结构:我的节点可以根据日期在彼此之间建立多个关系。例如" John"可以有一种关系"谈论"用"杰克"物业日期= 2016/02/12,物业长度= 12,物业日期= 2016/02/23,物业长度= 23的其他关系。

("John") - [:talked {date:"2016/02/12",legnth:12}] - ("Jack")

("John") - [:talked {date:"2016/02/23",legnth:23}] - ("Jack")

我想返回一个长度属性(长度= 35)和最早日期之和的关系:

("John") - [:talked {date:"2016/02/12",legnth:35}] - ("Jack")

如何在Cypher中实现这一目标?

1 个答案:

答案 0 :(得分:1)

当然可以。只需匹配它们并返回聚合。

match (p1:Person {name: 'John'} )-[r:TALKED]-(p2:Person {name: 'Jack'})
return p1
, p2 
, sum(r.length) as total_length
, min(r.date) as first_date