Генерация UUID для каждой группы в Neo4j - PullRequest
0 голосов
/ 13 января 2020

Я хочу сгенерировать UUID для каждой группы, созданной из данных ниже в neo4j. Так что я могу экспортировать данные каждой группы отдельно.

p1,p2
nishant,anish
anish,jose
nishant,jose
xiaoyi,neil
xiaoyi,menish
pavan,ankur
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)

1 Ответ

1 голос
/ 14 января 2020

хорошо, я сделал попытку чего-то, что могло бы удовлетворить вас. Здесь идет ...

Основная предпосылка 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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...