Sagen wir, ich habe ein Datenbankmodell wie in Bild (1) dargestellt, wo jede Person eine Alter-Eigenschaft hat und ich alle Kinder zweiter Ordnung, die der Sohn einer Tochter (Alter> 50) beginnend bei einem gegebenen Knoten. Für das gegebene Datenbankschema wäre mein erwartetes Ergebnis bei Bob [Tim, Sam].Match rekursive Muster bestehend aus mehreren Beziehungen in Chiffre
Ich habe bereits versucht, den ‚*‘ Operator für Beziehungen variabler Länge Abfrage konnte es aber nicht so weit an der Arbeit. Ich habe versucht,
START bob=node(0) MATCH (bob)-[:daughter*]->(p:Person)-[:son*]->(s)
WHERE p.age > 50 RETURN bob, sbob, s
die nur Bob und Tim zurückkehrt, sowie
MATCH (:Person)-[:daughter*]->(p:Person)-[:son*]->(s)
WHERE p.age > 50 RETURN collect(s)
, die mir gibt [Tim, Bob, Tom, Sam].
Gibt es eine Möglichkeit, mein erwartetes Ergebnis ohne Änderung der Datenbankstruktur zu erhalten?
aktualisieren Als zusätzliche Anforderung alle daugthers entlang eines Pfades als 50 Jahre alt sein müssen, das heißt, wenn Tina 48 ist und Carmen ist 52 (während praktisch unmöglich) eine leere Sammlung (das Alter der Kinder zurückgeführt wird don‘ t Sache).
Das löst meine Frage, wenn man annimmt, dass Kinder jünger sind als ihre Eltern. Obwohl praktisch unmöglich, möchte ich diese Annahme in meiner Frage auslassen. Bitte sehen Sie meine aktualisierte Frage. – tNewhomes
N/P - siehe update :) –
Ausführen Ihrer Abfrage Ich bekomme eine Typkonflikt beim Zugriff auf die Alter-Eigenschaft mit neo4j 2.2.3. Ich konnte dies umgehen, indem ich 'extract' verwendete, um eine Sammlung mit den Alter aller Knoten im Pfad zu erhalten. Vielen Dank für Ihre Hilfe – tNewhomes