Ich habe so etwas wie:Wie erstellt man eine korrelierte Unterabfrage?
create (:ex {name: "x", ver: 1.0});
create (:ex {name: "x", ver: 1.1});
create (:ex {name: "y", ver: 0.9});
und will die neueste Version für einen bestimmten Namen heißt x-1.1
und y-0.9
zurückzukehren. Ich habe dies versucht:
match (n:ex), (m:ex) where m.name = n.name and m.ver = max(n.ver) return m
aber neo hasst mich mit:
Ungültige Verwendung von Funktion max Aggregation (...) in diesem Zusammenhang (Zeile 1, Spalte (x) (Offset: 61))
Was ist der richtige Ansatz hier?
* Edit I *
ich auch zusammen meine Versionen haben dem Bespannen:
create (:ex {name: "x", ver: 1.0})-[:PrecededBy]->(:ex {name: "x", ver: 1.1});
match (n:ex {name: "x", ver: 1.1}) create (n)->[:PrecededBy]->(:ex {name: "x", ver: 1.2});
create (:ex {name: "y", ver: 0.9});
Denken ich endNode()
verwenden könnte, aber das scheint nicht überhaupt zu arbeiten:
match (n:ex)-[r]-() return endNode(r)
gibt 3 Knoten zurück!
* Edit II *
Ich hätte gedacht, so etwas wie dies könnte gearbeitet haben:
match p=(:ex)-[*]->(:ex) return last(nodes(p))
aber deutlich verstehe ich nicht last()
aber wie gebe ich den Knoten anstelle der Eigenschaft zurück? Wie sind Abfragen verschachtelt? 'match (n: ex) wobei n.ver = (match (m: ex) wobei m.name = n.name return max (m.ver)) return n' - oder so ähnlich? – ekkis
Ich könnte präziser in meiner Frage gewesen sein. als ich sagte "möchte die neueste Version zurückgeben" meinte ich "möchte den Knoten mit der neuesten Version zurückgeben" – ekkis
Ich habe meine Antwort aktualisiert. – cybersam