хорошо, я сделал попытку чего-то, что могло бы удовлетворить вас. Здесь идет ...
Основная предпосылка c состоит в том, что если group_uuid
уже установлено в паре person1
узлов, то используйте его. Если нет, то сгенерируйте новый и установите его там, где он не был установлен.
// same as above
LOAD CSV WITH HEADERS
FROM 'file:///hd.csv' as line
MERGE (per1:person1 {person1: line.p1})
MERGE (per2:person1 {person1: line.p2})
CREATE (per1)-[:knows]->(per2)
// determine which uuid value to use
// if per1 or per2 already has a uuid use it
// otherwise use apoc to generate one
WITH per1, per2,
CASE
WHEN per1.group_uuid IS NOT NULL THEN per1.group_uuid
WHEN per2.group_uuid IS NOT NULL THEN per2.group_uuid
ELSE apoc.create.uuid()
END AS uuid_to_use
// if per1 does not have a uuid set then set it
FOREACH (
x in CASE WHEN NOT exists(per1.uuid) THEN [1] ELSE [] END | SET per1.group_uuid = uuid_to_use
)
// if per2 does not have a uuid set then set it
FOREACH (
x in CASE WHEN NOT exists(per2.uuid) THEN [1] ELSE [] END | SET per2.group_uuid = uuid_to_use
)