【发布时间】:2019-10-11 00:16:52
【问题描述】:
我是 neo4j 的新手,我已经阅读了一些教程,但我一直坚持寻找从一个节点到另一个节点的所有路径,直到状态发生变化并且每次都有不同的路径。
我做了一张图片:
从顶部的节点开始,我想找到所有状态 = 1 的节点 T,我们从 O 类型的节点移动到具有 'o' 关系的 T 和从 T 移动到具有 'i' 关系的 O .如果我们到达一个状态 = 0 的节点 T,那么我们去 'i' 关系并检查 T 状态 = 1 等
我不知道图表的深度。我在手册上发现我们可以使用 [r*1..] 但我不知道如何在这里使用。
我试过了
match (o1:O)-[:o]-(t:T), (t)-[:i]-(o2:O)-[:o]-(t2:T)
return o1, t, o2, t2
对于第一个深度,但我不知道如何在未知深度下进行,只要状态不是 1 就可以更深入
【问题讨论】:
-
在您找到如何扩展查询之前,在您的关系上放置箭头确实会有所帮助;即
MATCH (o1:O)-[:o]->(t:T),因为 Neo4j 可以利用方向来加快查询速度。 -
在您的图表中,并非所有
T节点都有状态。 “从顶部开始”是指图表顶部的单个节点吗?你是否在逆向遍历关系?你能根据你的图表展示预期的结果吗?