嗨,我有以下情况:
MOVE 1 : FROM pointA TO pointD
MOVE 2 : FROM pointA TO b点 MOVE 3 : FROM pointA TO pointC
移动4 : FROM pointC TO pointD
移动5 : FROM pointB TO pointD
我想从pointA到pointD,我需要返回我需要遵循的路径(MOVE):
我刚刚做了这个查询:
START f = node(1),t = node(2)
MATCH F< - [1:从第] -move1- [R2:TO] - GT;点< - [3:从第] -move2- [R4:TO] - GT;吨
返回 move1,move2
然后又回来了:
_________________
| NODE | NODE |
|--------|--------|
| Move 2 | Move 5 |
| Move 3 | Move 4 |
|_________________|
我喜欢回归,但有一些失败的点
1)它错过了 MOVE 1 * 如果没有其他方式
,我可以构建另一个查询第二)我不知道如何使用它返回2个节点,如果它返回节点列表,我可以使用下面的代码,但是如果它返回节点(移动2)和节点(移动) 5)同时我如何处理这种情况?
@Query("f=node({id}) MATCH f<-[r1:FROM]-move1")
Iterable<Move> moves (@Param("id")Long id);
我的问题控制台:
http://console.neo4j.org/?id=ln3w9c
有人可以建议吗?
由于
答案 0 :(得分:0)
我想你需要找到所有可以带你从A点到B点的MOVES。如果是这种情况,下面就是查询
MATCH p=a-[:MOVE_TO*]->b
WHERE a.name='A' AND b.name='D'
RETURN p
您可以转到the console here进行测试。 (我为你设置了测试数据)。以下是我使用的Cypher设置
CREATE (pointA { name:'A'})
CREATE (pointB { name:'B'})
CREATE (pointC { name:'C'})
CREATE (pointD { name:'D'})
CREATE pointA-[:MOVE_TO]->pointD
CREATE pointA-[:MOVE_TO]->pointB
CREATE pointA-[:MOVE_TO]->pointC
CREATE pointC-[:MOVE_TO]->pointD
CREATE pointB-[:MOVE_TO]->pointD