Я изучаю шифр и пытаюсь найти способ создания динамических c отношений при выполнении условия. Вот пример:
у нас есть один узел:
(n2)
и другой узел, который имеет неизвестную связь TEMP_1 или TEMP_2 с его дочерний:
(n1) ------ [TEMP_1 или TEMP_2] ------> (дочерний)
мы хотим создать отношения между (n2) и (дочерний), если он существует
(n2) ------ [TEMP_1 или TEMP_2] ------> (дочерний)
Вот запрос:
MATCH (n1: NODE_1)
MATCH (n2: NODE_2)
OPTIONAL MATCH (n1)-[rel:TEMP_1|TEMP_2]->(child)
CALL apoc.do.when(child IS NOT NULL, "CREATE (n2)-[:r]->(ch) RETURN TRUE", "", {n2:n2, r:type(rel), ch:child}) YIELD value
Однако это создает мне отношение типа "r" вместо того, чтобы брать type из rel так это выглядит следующим образом:
(n2) - [r] -> (child)
Есть ли способ создания динамических c отношений на Speci c Условие?
У меня есть другая идея, но это потребовало бы продолжения выполнения запроса, даже если MATCH ничего не возвращает.
MATCH (n1: NODE_1)
MATCH (n2: NODE_2)
MATCH (n1)-[rel:TEMP_1|TEMP_2]->(child)
CALL apoc.do.when(child IS NOT NULL, "CREATE (n2)-[:r]->(ch) RETURN TRUE", "", {n2:n2, r:type(rel), ch:child}) YIELD value
...[other parts of query e.g. MATCH | CREATE ...]
Не существует необязательного СОВПАДАЙТЕ в этот раз, и когда child is NULL, он возвращается и не беспокоит вызов процедуры APO C Однако я хотел бы продолжить с другой частью запроса, например, создать другие отношения. Есть ли способ сделать sh что-то подобное?