我有一个包含2137个不同路径的图表,没有相互连接。每个路径中的节点由属性“Isnad”编号,其中Isnad = 1,2,3 ...... 2137。我想返回所有2137条路径的长度。
match(n:Narrator)
where n.Isnad = "1"
return count(n)
现在这适合我,但我想迭代“Isnad”,所以我得到所有2137路径的计数,而不是一个。有什么建议? 在伪代码中,它会像:
for(int i = 1 to 2137)
match(n:Narrator)
where n.Isnad = i
return count(n)
答案 0 :(得分:0)
unwind range(1, 2137) AS i
match p=(n:Narrator)-[*]->(m)
where toInteger(n.Isnad) = i
and not ()-[]->(n)
and not (m)-[]->()
return n.Isnad, length(p)
limit 10
请注意,我们正在寻找最长的路径。这在WHERE
条件中表示:路径的第一个节点不应具有前一个节点(not ()-[]->(n)
),而路径的最后一个节点不应具有后续节点({{1} }) - 见this answer。
我包含了not (m)-[]->()
行,因此计算和返回结果不会冻结服务器或Web用户界面。如果查询似乎没问题,请删除limit 10
并查看它是否仍然有效。当嵌入到客户端应用程序时,它可以扩展到更多结果,因为Web UI的呈现将不再是瓶颈。