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的内容,但我不确定如何获得指向每个关系的命名指针。
感谢您的帮助! 迪安
答案 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)
在不同的切线上,您将在查询中的两个方向上匹配所有可能的关系类型和关系。您可能希望将其限制为特殊和定向关系类型。