Neo4j 2.0 - 来自密码查询的求和关系结果

时间:2013-06-14 20:01:08

标签: neo4j cypher

Neo4j的新手。

我有一些节点通过具有"权重"的关系连接起来。有数字的财产。我试图获得查询中返回的所有关系的平均权重属性。

以下是我尝试的查询:

MATCH (x)-[r*1..6]-prod:Product 
WHERE x.name = 'ddbrown::default' 
RETURN sum(r.weight);

我收到以下异常

CypherTypeException: Expected `r` to be a Map but it was a Collection<relationship>

我明显误解了返回r的内容,但我不确定如何获得指向每个关系的命名指针。

感谢您的帮助! 迪安

1 个答案:

答案 0 :(得分:5)

Sum可用于聚合多个匹配的返回值。您需要做的是计算匹配的路径r的多个部分的值。要计算集合的值,您可以使用reduce

match x -[r*1..6]-prod:Product
WHERE x.name = 'ddbrown::default' 
return x, reduce(acc=0, n in r: acc + n.weight)/length(r)

在不同的切线上,您将在查询中的两个方向上匹配所有可能的关系类型和关系。您可能希望将其限制为特殊和定向关系类型。