neo4j如何在路径的节点上使用count(distinct())

时间:2016-07-10 08:12:32

标签: neo4j cypher

我搜索图表中最长的路径,并且我想计算这条最长路径的不同节点的数量。

我想使用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的字段。

1 个答案:

答案 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;