Wie kann ich die nächste Cyper-Abfrage ohne Fehler schreiben?neo4j "Versuch", eine Beziehung zum Knoten zu erstellen
Match (n: {id :"someid"}),(x {id:"otherId"})
OPTIONAL MATCH (n)-[]->(t:Other)
merge x-[]->(t)`
Das Problem ist, dass es eine cance ist, dass t
null sein wird und krank eine Fehlermeldung erhalten: Expected to find a node at t but found nothing Some(null)
dies ist die komplette Abfrage:
MATCH (traveler:${labels.N_TRAVELER} {id: {traveler}.id})
OPTIONAL MATCH (traveler)-[r:${labels.R_TRAVELER_LATEST_EVENT}]->(prev:${labels.N_EVENT})
OPTIONAL MATCH (interest:${labels.N_INTERESTS}) WHERE interest.id IN {interests}
DELETE r
MERGE (traveler)-[:${labels.R_TRAVELER_LATEST_EVENT}]->(trip:${labels.N_TRIP_EVENT})
ON CREATE SET trip={trip}
MERGE (traveler)-[:${labels.R_TRAVELER_WRITE_TRIP}]->(trip)
MERGE (trip)-[:${labels.R_TRIP_INTEREST}]->(interest)
WITH trip, collect(prev) as prevs
UNWIND prevs as prev
MERGE (trip)-[:${labels.R_EVENT_PREV_EVENT}]->(prev)
WITH trip
RETURN properties(trip) as trip`
alle labels.
sind nur Zeichenketten .. {interests}
ist ein Array von IDs
Im Grunde zu erstellen, ein verkettete Liste von Reisen
der 'UNWIND' Teil ist genau was ich brauche und seine Arbeit .. aber es gibt keine elegantere Lösung? wie merge wo t ist nicht null oder so ähnlich? – tubu13
Momentan fehlen Cypher ein paar Bedingungen, ich bin mir sicher, dass es kommen wird. Ich fürchte, ich sehe derzeit nichts eleganteres. –
Etwas stimmt nicht. Die Beziehung wird erstellt, aber danach mache ich 'n n return n' und es kommt leer zurück .. irgendwelche Ideen? – tubu13