我在我的Neo4j這種關係:獲取特定節點的所有孩子的,直到特定深度
Parent -> Childs
F -> D,E
D -> A,B,C
A -> X
使用案例:我想用這個查詢以獲得特定節點的所有子直到一個特定的深度,讓我們說depth
= 2
查詢來獲取節點的所有子F
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;
這將返回我:(這是F的所有孩子的節點無極限)
但是,當我試圖讓所有的孩子的,直到深度2:
查詢得到深度= 2的節點F
的所有孩子
MATCH (p:Person)-[:REPORTS_TO *2]->(c:Person) WHERE p.name="F"
WITH COLLECT (c) + p AS all
UNWIND all as p MATCH (p)-[:REPORTS_TO]->(c)
RETURN p,c;
當我把深度= 2,返回
,它未返回D' (only returned A and not
B`, 'C')的所有兒童的
期望的迴應是:
所有的孩子'F'的所有孩子的孩子(即1級)和1級節點的所有孩子的孩子(即2級)
我是否在我的查詢中丟失了某些內容或以其他方式獲得響應,如上所示?
添加數據集
CREATE (f:Person {name: "F"})
CREATE (e:Person {name: "E"})
CREATE (d:Person {name: "D"})
CREATE (c:Person {name: "C"})
CREATE (b:Person {name: "B"})
CREATE (a:Person {name: "A"})
CREATE (x:Person {name: "X"})
CREATE (a)-[:REPORTS_TO]->(x)
CREATE (d)-[:REPORTS_TO]->(a)
CREATE (d)-[:REPORTS_TO]->(b)
CREATE (d)-[:REPORTS_TO]->(c)
CREATE (f)-[:REPORTS_TO]->(d)
CREATE (f)-[:REPORTS_TO]->(e)
感謝,工作很適合我 –