Как создать ребро в Neo4j между двумя узлами, совпадающими с двумя записями csv в neo4j? - PullRequest
0 голосов
/ 30 мая 2019

Предположим, у меня есть следующая таблица в csv.

 elementID | groupID | sequence
     abc   |    A    |    0
     dcv   |    A    |    1
     asd   |    B    |    3
     ccc   |    B    |    2
     abc   |    B    |    4

Я уже создал Element узлы в Neo4j (sequence не является атрибутом узлов), имеющий в качестве атрибута ключ elementID.

Из этого csv мне нужно создать отношение из каждого Element узла, принадлежащего группе, к другому элементу, принадлежащему к той же группе, имеющему следующий sequence номер.

С данными выше мне нужно создать отношение от abc до dcv (например, с пометкой A), от asd до abc (с пометкой B) и от ccc до asd снова помечено B.

Я думал, что запрос так:

LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row
WITH row
MATCH (from:Element {elementID : row.elementID})
MATCH (to:Element {...})
MERGE (from)-[r:row.groupID]->(t)

Проблема в том, что я не знаю, как MATCH второй узел, так как на графике мне нужен nodeID, в то время как с текущей переменной row у меня есть только данные узла from.

Как я могу это сделать? Есть ли способ использовать вторую переменную, представляющую другую запись в csv, которая будет использоваться для второй MATCH?

В этом последнем случае мне нужно указать следующие условия:

WHERE row2.sequence = row.sequence+1 AND row2.groupID = row.groupID
...