2

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,但我不确定如何获取每个关系的命名指针。

谢谢你的帮助!院长

4

1 回答 1

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)

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

于 2013-06-14T22:21:35.703 回答