1

我试图在我的 MATCH 找到的每条路径上获得权重的总和。查询如下:

START n=node(10200) 
MATCH p=(n)-[r*1..5]->(m:Facility) 
WITH REDUCE(weights=0, rel IN r : weights + rel.weight) AS weight_sum 
WHERE ALL(n in nodes(p) WHERE 1=length(filter(m in nodes(p) : m=n))) 
RETURN p AS paths, length(p) AS pc,  
(weight_sum / (length(p) * (length(p) / 2))) AS sp;

每次我运行它时,我都会...

Unknown identifier `p`

如果我删除我的 WITH 行(以及 weight_sum RETURN 值),则查询知道“p”是什么并且执行得很好。我的查询是否存在“p”值丢失的问题?有没有更好的选择来获得这些关系属性的总和?

4

1 回答 1

4

您可以通过 WITH 将“p”传递到查询的下一部分:

START n=node(10200) 
MATCH p=(n)-[r*1..5]->(m:Facility) 
WITH REDUCE(weights=0, rel IN r : weights + rel.weight) AS weight_sum, p
WHERE ALL(n in nodes(p) WHERE 1=length(filter(m in nodes(p) : m=n))) 
RETURN p AS paths, length(p) AS pc,  
(weight_sum / (length(p) * (length(p) / 2))) AS sp;
于 2013-07-31T16:45:08.620 回答