我搜索图形的最长路径,并希望计算该最长路径的不同节点数。
我想使用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())
。节点Primero有一个名为id的字段。
最佳答案
您应该绑定(bind)这些节点中的至少一个,添加方向,还要考虑路径限制,否则这将是非常昂贵的查询。
match p=(primero)-[:ResponseTo*..30]-(segundo)
with p order by length(p) desc limit 1
unwind nodes(p) as n
return distinct n;