Ich versuche eine knifflige Abfrage zu machen. Ich muss überprüfen, ob eine Beziehung besteht;neo4j MERGE, SET, CASE
- wenn es tut Ich brauche eine Eigenschaft festlegen (prop) auf diese Beziehung zu max (0, Prop + val)
- wenn es mich nicht erstellen muß es die Eigenschaft auf max (0, Wert)
Die Eigenschaft kann negativ sein.
Hier ist im Wesentlichen, was ich werde, obwohl dieses Format wird nicht funktionieren, weil Sie nicht ein WITH-Anweisung nach einer MERGE haben:
MATCH (n1:Type1 {id:{id1}), (n2:Type2 {id: {id2})
MERGE (n1)-[r:RELATIONSHIP]->(n2) WITH CASE
WHEN r.prop + {val} < 0 THEN 0
ELSE r.prop + {val} END as prop
ON CREATE SET r.prop = prop
ON MATCH SET r.prop = prop
Dies ist, wie es es zwei Teile aussehen würde, obwohl ich mag würde nicht zweimal fragen haben:
MATCH (n1:Type1 {id:{id1}), (n2:Type2 {id: {id2})
MERGE (n1)-[r:RELATIONSHIP]->(n2)
ON CREATE SET r.prop = 0
MATCH (n1:Type1 {id:{id1})-[r:RELATIONSHIP]->n2:Type2 {id: {id2})
WITH r, CASE
WHEN r.prop + {val} < 0 THEN 0
ELSE r.prop + {val} END as prop
SET r.prop = prop
Es tut mir leid, aber das funktioniert nicht. Es fängt nicht den Fall ein, wenn r.prop + {val} <0 ist und muss r.prop auch auf {val} oder 0 auf CREATE setzen – v4gil