我一直在玩Neo4j并遇到一个我没有解决方案的问题,因此我的问题在这里。
对于我的特殊问题,我将描述一个捕获本质的简化版本。假设我有一个直接或通过绕道连接的位置图表:
如果我希望在“Go”和“Finish”之间拥有GOES_TO关系,我可以轻松使用Cypher查询:
START a=node:NODE_IDX(Id = "Go"), b=node:NODE_IDX(Id = "Finish)
MATCH a-[r:GOES_TO*]->b
RETURN a,r,b
此处,NODE_IDX是节点上的索引(Id)。
我遇到困难的时候,我希望“Go”和“Finish”之间的所有路径都不是GOES_TO关系,而是多个GOES_THROUGH - >() - > COMES_BACK_TO关系组合(可变深度) )。
我不想过滤掉GOES_TO关系,因为节点之间有更多的关系,我不想容纳所有这些关系(动态地)。我可以设想一个可变深度,多关系的MATCH吗?
谢谢!
答案 0 :(得分:0)
让我重申一下我所相信的问题。
"If there is a path of the form (a)-[:X]->(b), find all other paths from a to b."
答案很简单:
MATCH p=(a)-[:X]->(b), q=(a)-[r*]->(b)
WHERE p<>q
RETURN r;