我搜索图表中最长的路径,并且我想计算这条最长路径的不同节点的数量。
我想使用count(distinct())
我尝试了两次查询。
首先是
match p=(primero)-[:ResponseTo*]-(segundo)
with max(length(p)) as lengthPath
match p1=(primero)-[:ResponseTo*]-(segundo)
where length(p1) = lengthPath
return nodes(p1)
查询结果是一个包含路径节点的图表。
但如果我尝试了查询
match p=(primero)-[:ResponseTo*]-(segundo)
with max(length(p)) as lengthPath
match p1=(primero)-[:ResponseTo*]-(segundo)
where length(p1) = lengthPath
return count(distinct(primero))
结果是
count(distinct(primero))
2
如何在节点primero上使用count(distinct())
。
Node Primero有一个名为id的字段。
答案 0 :(得分:2)
您应该至少绑定其中一个节点,添加方向并考虑路径限制,否则这是一个非常昂贵的查询。
match p=(primero)-[:ResponseTo*..30]-(segundo)
with p order by length(p) desc limit 1
unwind nodes(p) as n
return distinct n;