Как создать ссылку между узлами на основе ссылки на подузел в Neo4j - PullRequest
1 голос
/ 03 мая 2020

У меня есть база данных с двумя кластерами. Существует жесткая связь между узлами в нижней части. Но когда вы выбираете только верхние узлы, я хотел бы видеть, что узлы root где-то связаны.

Extracted picture - Explicit exists, need to generate

Таким образом, ссылки внизу связаны, но когда вы выбираете только верхние узлы, я хотел бы показать это в какой-то момент (в любой точке ) это связано.

1) Я могу найти связь между группами, сопоставив дочернее соединение, в котором у цели разные идентификаторы группы (идентификатор группы на каждом узле) 2) Я думаю, что тогда мне нужно запустить дерево и найти root узел. Я не могу заставить эту работу. Я могу видеть это, но не могу придумать шифр, чтобы сделать это. Это был бы узел без родителей. 3) затем ссылка (с другим идентификатором ссылки: peerLink)) из группы a в группу b. Это достаточно легко сделать, когда у меня будет 2

У меня есть зверь, который собирает их вместе. Я создал отдельное поле для списка peerLinks, чтобы они не путали мои родительские логи c. Итак, еще раз, цель состоит в том, чтобы создать пунктирную линию на основе соединения подузла.

Мне НЕ нужно показывать это на подуровнях. Они будут отображаться в пользовательском интерфейсе как внешний соединитель

Кто-нибудь делал это раньше?

1 Ответ

1 голос
/ 03 мая 2020

Можете ли вы попробовать это?

MATCH (A_leaf)->(B_leaf)
WHERE A_leaf.GroupID <> B_leaf.GroupID
WITH A_leaf
MATCH (A_leaf)<-[*]-(A_root)
WHERE NOT (A_root)<-()
WITH B_leaf
MATCH (B_leaf)<-[*]-(B_root)
WHERE B_leaf.GroupID == B_root.GroupID
AND NOT (B_root)<-()
CREATE (A_root)-[:relName]->(B_root)
...