Graph 获取节点之间的关系
我使用此查询得到以下类型的图形:Graph 获取节点之间的关系,graph,neo4j,spring-data-neo4j,Graph,Neo4j,Spring Data Neo4j,我使用此查询得到以下类型的图形: MATCH (p:Person)-[:REPORTS_TO *]->(c:Person) WHERE p.name="F" WITH COLLECT (c) + p AS all UNWIND all as p MATCH (p)-[:REPORTS_TO]-(c) RETURN p,c; 用例: 1。我想找出节点相对于节点F? 例如: Node `D`, `E` are direct child of `F`, hen
MATCH (p:Person)-[:REPORTS_TO *]->(c:Person) WHERE p.name="F"
WITH COLLECT (c) + p AS all
UNWIND all as p MATCH (p)-[:REPORTS_TO]-(c)
RETURN p,c;
用例:
1。我想找出节点相对于节点F
?
例如:
Node `D`, `E` are direct child of `F`, hence they are at level 1
Node `A,B,C` are childs of `D` (which is child of `F`) hence level 2
Node `X` is child of `A' (which is at level 2), hence level 3
and so onnnnn....
我试图通过引入一个变量I
来解决这个问题,并在每次迭代中增加它(,但它不起作用)
2。给定两个节点,查找它们之间的关系
e、 g查找F和X之间的关系?
预期answer=3(与第3级相同)
我应该如何着手解决这些用例?
注意:不一定需要Neo4j服务器的图形响应,Json响应也可以。UC1使用和length(p)
函数
MATCH p=(root:Person)-[:REPORTS_TO *]->(child:Person)
WHERE root.name="F"
RETURN nodes(p)[-2], nodes(p)[-1],length(p)
这将找到根节点的所有路径,并返回所需的从第二个到最后一个和最后一个节点+级别的成对路径
节点(p)-路径p上的节点列表
[-2]-列表末尾的第二个节点
UC2:使用最短路径
功能:
MATCH (p1:Person),(p2:Person)
WHERE p1.name = '..' AND p2.name = '...'
MATCH p=shortestPath((p2)-[:REPORTS_TO*]->(p2))
RETURN length(p)
UC1使用和长度(p)
功能
MATCH p=(root:Person)-[:REPORTS_TO *]->(child:Person)
WHERE root.name="F"
RETURN nodes(p)[-2], nodes(p)[-1],length(p)
这将找到根节点的所有路径,并返回所需的从第二个到最后一个和最后一个节点+级别的成对路径
节点(p)-路径p上的节点列表
[-2]-列表末尾的第二个节点
UC2:使用最短路径
功能:
MATCH (p1:Person),(p2:Person)
WHERE p1.name = '..' AND p2.name = '...'
MATCH p=shortestPath((p2)-[:REPORTS_TO*]->(p2))
RETURN length(p)
非常感谢解决了
用例1
,但是如何继续用例2
@PrakashPandey为uc2添加了答案非常感谢解决了用例1
,但是如何继续用例2
@PrakashPandey为uc2添加了答案