我一直在玩 Neo4j 并且遇到了一个我没有解决方案的问题,因此我的问题在这里。
对于我的特定问题,我将描述一个抓住本质的简化版本。假设我有一个直接或通过绕道连接的位置图:
- 直接:(A)-[:GOES_TO]->(B)
- 间接:(A)->[:GOES_THROUGH]->(C)-[:COMES_BACK_TO]->(B)
如果我想在“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?
谢谢!