Neo4j的新手.
我有一些节点通过具有"权重"属性和数字的关系连接.我试图获得查询中返回的所有关系的平均权重属性.
这是我正在尝试的查询:
MATCH (x)-[r*1..6]-prod:Product
WHERE x.name = 'ddbrown::default'
RETURN sum(r.weight);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常
CypherTypeException: Expected `r` to be a Map but it was a Collection<relationship>
Run Code Online (Sandbox Code Playgroud)
我显然错误地解释了作为r返回的内容,但我不确定如何获得指向每个关系的命名指针.
谢谢你的帮助!院长
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)
Run Code Online (Sandbox Code Playgroud)
在不同的切线上,您将在查询中的两个方向上匹配所有可能的关系类型和关系.您可能希望将其限制为特殊和定向关系类型.