我想确定图中的所有循环。我想要一些查询,它会给我2个节点之间的周期,另一个查询会给我3个节点之间的周期...直到n个节点。
我尝试了一些查询,但是我不知道如何仅显示2个节点的循环,然后仅显示3个节点的循环。相反,我可以显示所有周期。
MATCH
(m1:Disease)-[]->(m2:Disease),
cyclePath=shortestPath((m2)-[*1..10]->(m1))
WITH
m1, nodes(cyclePath) as cycle
WHERE id(m1) = apoc.coll.max([node in cycle | id(node)])
RETURN m1.id, cycle ;
我希望有更多的查询,这些查询只会给我2个节点的周期,然后是3个节点... n个节点(直到确定了最大周期)。
答案 0 :(得分:2)
这是获取长度为2的所有循环的一种非常简单的方法:
MATCH p=(m1:Disease)-[*2]->(m1)
RETURN NODES(p) AS cycle
要获取其他长度的循环,只需将查询中的2
替换为所需的长度。
注意:此查询可以多次返回相同的节点循环,但具有不同的开始/结束节点。例如1-> 2-> 1和2-> 1-> 2。