Neo4j cypher查询返回关系属性和所有匹配关系属性的总和

时间:2013-09-24 07:38:22

标签: neo4j cypher

我正在尝试返回一个关系属性(称为proportion)加上Neo4j中Cypher查询匹配的所有关系的该属性的总和。我已经走到了这一步:

START alice=node(3) 
MATCH p=(alice)<-[r:SUPPORTED_BY]-(n) 
RETURN reduce(total=0, rel in relationships(p): total + rel.proportion), sum(r.proportion) AS total;

返回:

+-----------------+
| reduced | total |
+-----------------+
| 2       | 2     |
| 1       | 1     |
+-----------------+

我期待的地方:

+-----------------+
| reduced | total |
+-----------------+
| 2       | 3     |
| 1       | 3     |
+-----------------+

作为Cypher的初学者用户,我不确定如何处理此查询;我显然没有正确使用reduce。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:7)

您需要使用WITH将查询分为两部分:

  1. 找到所有比例的总和,并将其作为绑定名称传递给下一部分
  2. 找到个别比例
  3. START alice=node(3)
    MATCH alice<-[r:SUPPORTED_BY]-() 
    WITH sum(r.proportion) AS total 
    MATCH alice<-[r:SUPPORTED_BY]-(other) 
    RETURN other.name, r.proportion, total