Ich versuche, eine Beziehung mit Eigenschaften abhängig von mehreren verschiedenen Fällen zu erstellen. Ich dachte, ich könnte FOREACH und CASE verwenden.Hinzufügen mehrerer Eigenschaften mit einer CASE/FOREACH-Anweisung in Cypher
Hier ist eine vereinfachte Version von meinem Code:
LOAD CSV WITH HEADERS FROM 'file:///hwconnectIDs.csv' AS cnct
MATCH (h1:hardware), (h2:hardware), (c:cable)
WHERE (h1.hwID= cnct.conID1) AND (h2.hwID = cnct.conID2) AND (c.cableID =cnct.cableID)
FOREACH (plugType IN
CASE WHEN (h1.plug1=c.plug1 AND c.plug2=h2.plug1)
THEN [c.plug1,c.plug2]
CASE WHEN (h1.plug2=c.plug2 AND c.plug1=h2.plug1)
THEN [c.plug2,c.plug1]
ELSE [] END
|
CREATE (h1)<-[:connect{plug:plugType[0]}]-(c)-[:connect{plug:plugType[1]}]->(h2)
)
Probleme:
- Es I Für die ELSE-Variable plugType in FOREACH
- ein Array-Typ nicht erstellt werden kann, scheint Fall möchte ich die Beziehung überhaupt nicht schaffen. Im Moment wäre der Wert für die Beziehungseigenschaften plugType nur leer und nicht die gesamte Beziehung nicht vorhanden.
Hinweis: Die WHERE-Bedingung stellt sicher, dass ich mit den richtigen Hardware-Geräten und Kabel arbeite. Die Datei hwconnectIDs.csv gibt im Grunde eine Liste von Geräten h1 und h2 gemeint durch Kabel c verknüpft werden.
Gibt es eine Möglichkeit zur Ausführung von Befehlen nach mehreren verschiedenen Fällen in Cypher wie if/elseif /../ else in anderen Sprachen?
Haben Sie eine Fehlermeldung oder ähnliches? –
Ich hatte einen vorher. Aber als ich das gerade jetzt probiert habe, habe ich keins bekommen. Es sagte nur "(keine Änderungen, keine Aufzeichnungen)". –
Sind Sie sicher, dass die in Ihrer 'MATCH'-Anweisung referenzierten Knoten existieren? –