我搜索图形的最长路径,并希望计算该最长路径的不同节点数。

我想使用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;

09-27 02:47