Cypher-Spring Neo4j - 同时返回2个节点

时间:2013-09-14 00:00:24

标签: spring neo4j cypher

嗨,我有以下情况:

  


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


有人可以建议吗?

由于

1 个答案:

答案 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