Как установить свойство как итерацию связанных свойств узлов на узлах, которые являются результатом моих операторов в foreach, который следует за необязательным соответствием?
Я заменяю старые узлы новыми узлами, и соответственноизменение идентификатора узлов, которые были связаны со старым узлом.Идентификатор представляет собой конкатенацию связанных новых узлов.
Я попытался с двумя последующими необязательными совпадениями, но боюсь, что если первое вернется к нулю, то второе совпадет с ВСЕМ, что может стать проблемой мухо.
MATCH (old), (new)
...bunch of stuff...
WITH old, new
OPTIONAL MATCH (old)-[oldrel:HAS]->(parent)
FOREACH (o IN CASE WHEN parent IS NOT NULL THEN [parent] ELSE [] END|
MERGE (new)-[newrel:HAS]->(parent)
DELETE oldrel
SET parent.newID=[(parent)<-[:HAS]-(children) | REDUCE(iterate="", child IN children | iterate + "," + child.Property1+child.Property2)] )
также пытался, но проблематично, когда родительский нуль ...
MATCH (old), (new)
...bunch of stuff...
WITH old, new
OPTIONAL MATCH (old)-[oldrel:HAS]->(parent)
FOREACH (o IN CASE WHEN parent IS NOT NULL THEN [parent] ELSE [] END| MERGE (new)-[newrel:HAS]->(parent))
DELETE oldrel
WITH old, new, parent
OPTIONAL MATCH (parent)<-[:HAS]-(children)
SET parent.newID=REDUCE(iterate="", child IN children | iterate + "," + child.Property1+child.Property2)
Желаемый результат:
, если oldchild 1 имеет свойство 1: 3 и свойство 2: X
и newchild 1 имеет свойство 1: 9 и свойство 2: Y
, затем родительский ID1 переключается с 3X, 5Q на 5Q, 9Y (в идеале отсортированный таким образом)
и родительский ID2переключается с 0P, 3X, 6S на 0P, 6S, 9Y (в идеале, сортируется таким образом)
, если у old нет родителя, то ни у одного узла не поменялись местами ID