0

您好我有以下情况:


移动 1A 点D点
移动 2A 点B点
移动 3A 点C点
移动 4C点D 点
移动 5B 点D 点

我想从 pointA 到 pointD,我需要返回我需要遵循的路径(MOVE):

我刚刚做了这个查询:


开始 f=node(1),t=node(2)
匹配 f<-[r1:FROM]-move1-[r2:TO]->point<-[r3:FROM]-move2-[r4:TO]- >t
返回move1,move2

它返回:

 _________________
| NODE   |  NODE  |
|--------|--------| 
| Move 2 | Move 5 |
| Move 3 | Move 4 |
|_________________|

我喜欢回报,但有一些失败的地方

1st) 它错过了MOVE 1 *如果没有其他方法,我可以构建另一个查询

2nd)我不知道如何使用它返回 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


有人可以建议吗?

谢谢

4

1 回答 1

0

我想您需要找到可以将您从 A 点带到 B 点的所有 MOVES。如果是这种情况,下面是查询

MATCH p=a-[:MOVE_TO*]->b 
WHERE a.name='A' AND b.name='D' 
RETURN p

您可以通过此处的控制台对其进行测试。(我已经为你设置了测试数据)。以下是我使用的设置 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
于 2013-09-14T15:20:12.240 回答