Я пытаюсь написать запрос слияния для отношения между двумя узлами. Сложная часть состоит в том, что если я не найду узел со вторым совпадением, я хочу сделать другое совпадение, чтобы искать «резервный» узел с различными условиями фильтрации для запроса слияния.Имейте «резервный» узел при слиянии отношений в cypher
Чтобы сделать его коротким: я хочу объединить (A) -> (B), если существует B, и (A) -> (C), если B не существует.
Это то, что я придумал, посмотрев на различных должностях:
MATCH (n:ArticleConv {id:"firstId"}) OPTIONAL MATCH (m:ArticleCode {name:"targetName"}) WHERE m.begin <= n.begin <= m.end OPTIONAL MATCH (l:ArticleCode {num:"targetName"}) WHERE not(()-[:Version]->(l)) FOREACH (o IN CASE WHEN m IS NOT NULL THEN [m] WHEN m IS NULL AND l IS NOT NULL THEN [l] ELSE [] END | MERGE (n)-[r:Link]->(o))
Однако он не работает по назначению: если оба дополнительные узлы матч не нуль, то два отношения создаются ориентации каждого узла ,
Спасибо!
Мне нравится ваше решение, чище, чем у меня, и я узнал, что COALESCE работает на узлах ^^ –