Hier ist mein Modell: (:A)<--(:B)<-[:R {timestamp}]-(:C {number})
Cypher - erhalten Sie den neuesten Knoten
Was ich versuche in einer Chiffre-Abfrage zu erreichen, ist den neuesten C-Knoten zu erhalten, nach dem neuesten Stand R.timestamp (oder C Anzahl) für ein gegebenes A und alle B Knoten. Das ergibt ein A, mehrere Bs und ein C, die zu jedem B mit dem höchsten R-Zeitstempel gehören. Am besten wäre es, auch B-Knoten ohne irgendeine Beziehung zu C zurück zu geben.
In SQL würde ich gruppieren nach und rang nur die n Zeilen, die ich pro Gruppe wünschen, habe ich nicht genug Erfahrung mit COLLECT oder UNWIND um das gleiche Ergebnis zu erzielen.
Danke, das löst es. Ich habe die Funktion 'last()' nicht gefunden. Alternativ wäre es möglich, mit der Reihenfolge (DESC oder ASC) mitzuspielen und 'last()' mit 'head()' zu wechseln. (vgl. https://neo4j.com/docs/developer-manual/current/#query-function). Nun gibt dies nicht die B-Knoten ohne C bezogen auf zurück. Ich werde das Ergebnis untersuchen und posten. – Rwanou
Ich schaffe es funktioniert mit Filterung auf eine Beziehung Eigenschaft und einschließlich Sackgasse Bs: 'MATCH (a: A {Name: {param}}) <- (b: B) mit a, b OPTIONAL MATCH (c: C) - [r: R] -> (b) // Ignoriere fehlende C MIT a, b, r, c ORDER BY r.END DESC MIT a, b, Kopf (sammeln (c)) als most_recent_c, head (collect (r)) als most_recent_r RETURN a, b, most_recent_c, most_recent_r; ' – Rwanou