neo4j - 使用 Cypher 识别图中的循环(包含 2 个节点、3 个节点...n 个节点)
问题描述
我想确定图表中的所有周期。我想要一些查询,它会给我 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 个节点(直到确定最大周期)。
解决方案
这是获取长度为 2 的所有循环的一种非常简单的方法:
MATCH p=(m1:Disease)-[*2]->(m1)
RETURN NODES(p) AS cycle
要获得其他长度的循环,只需2
在查询中替换为所需的长度。
注意:此查询可以多次返回相同的节点循环,但具有不同的开始/结束节点。例如,1 -> 2 -> 1 和 2 -> 1 -> 2。
推荐阅读
- hyperledger-fabric - HyperLedger Fabric 中的复杂数据类型
- java - 使用纬度和经度为路线创建多边形
- matlab - 我在尝试实现解决 ODE 的中点方法时不断出错
- c# - Asp.net c# reverse dns lookup to get computer name failed for some client
- wordpress - Stager iframe 售票处嵌入 wordpress
- json - 更改共享点列表中列的背景颜色
- excel - Excel vba:在同一个工作表中同步两个下拉列表
- matlab - 如何标记 500 值以下的内容?
- c++ - 为什么我只能使用 auto 类型创建函数别名?
- python - Python:循环后创建所有变量返回