сумма 2 графов в neo4j с несколькими MERGE - PullRequest
0 голосов
/ 30 июня 2018

вкратце: как мы можем MERGE несколько узлов и отношений так же, как мы делаем с MATCH и CREATE: мы можем сделать несколько CREATE или MATCH для узлов или отношения, разделенные запятой, но это действие не допускается с MERGE

подробно: предположим, у меня есть два графика:

G1: (a)-[r1]->(b)<-[r2]-(c)
G2: (a)-[r1]->(b)<-[r3]-(d) 

У меня есть G1, вставленный в neo4j, и G2 готов к отправке в дБ. Обычный способ сделать это - объединить каждую пару узлов, а затем объединить отношение; в этом примере для отношения r1 не было бы изменений в дБ, поскольку G1 уже имеет отношение, однако для второго мой CQL сначала создает узел d, затем добавляет отношение r3

Есть ли способ подтолкнуть G2 к дБ за один шаг? что-то вроде:

MERGE (a), (b), (c), (a)-[r1]->(b)<-[r3]-(d)

чтобы создать такой результат:

(a)-[r1]->(b)<-[r2]-(c)
           ^
           |
          [r3]
           |
          (d)      

1 Ответ

0 голосов
/ 30 июня 2018

Не с одним утверждением MERGE. Вам нужно будет следовать схеме выполнения MERGE для каждого узла, а затем MERGE для каждого отношения.

Тем не менее, Neo4j использует транзакции, поэтому, хотя это разбивается на несколько предложений в вашем запросе Cypher, транзакция применяется атомарно при фиксации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...