I diese Beziehung in meinem Neo4j hat:alle Childs von einem bestimmten Knoten Get bis zu einer bestimmten Tiefe
Parent -> Childs
F -> D,E
D -> A,B,C
A -> X
Use Case: Ich versuche, alle Kinder von einem bestimmten Knoten zu erhalten, diese Abfrage mit bis zu einer bestimmten Tiefe des depth
= 2
Abfrage sagen lassen Sie alle Kind-Knoten F
Das gibt mir dies: (welche alle Knoten von F ohne Begrenzung des Kindes)
Aber wenn ich versuche, alle Childs zu bekommen bis Tiefe 2:
Abfrage Alle untergeordneten Elemente des Knotens F
mit der Tiefe = 2
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;
Welche
kehrt Wenn ich Tiefe = 2 gesetzt, hat es nicht alle Kinder von D' (only returned A and not
B` zurückkehren, 'C')
Erwartete Antwort war:
Alle Kinder von "F", Kind aller Kinder von "F" (dh Ebene 1) und Kind aller Kinder von Knoten der Stufe 1 (dh Ebene 2)
Fehle ich etwas in meiner Abfrage oder auf eine andere Weise, um eine Antwort wie oben erwartet zu erhalten?
Hinzufügen von Daten-Set
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)
dank arbeitete gut für mich –