Neo4J Объединить узел, если свойство существует, и создать другой узел со связью - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть узел документа со свойствами documentId и name.Мне нужно создать несколько узлов Activity так, чтобы каждое действие было связано с Document с отношением CONTAINS следующим образом:

Document-CONTAINS->Activity

Теперь в Neo4J я хочу написать запрос, такойчто он объединит Document Node, если он существует, или Create, если его нет.И в том же запросе он создает операцию с CONTAINS кораблем отношений.

Примерно так:

merge (d:Document{documentId:100,name:'Doc1'})-[r:CONTAINS]->(a:Activity{name:'ijk'})
return d, a

Когда этот запрос выполняется впервые, он создает Document и Activity Узел, и он также создаст CONTAINS отношение.

Когда я выполняю тот же запрос с другим именем действия, он должен создать новые отношения Activity Node и CONTAINS, и он должен объединить Documentузел.

Я хочу сделать это в одном запросе.

1 Ответ

0 голосов
/ 25 февраля 2019

да, просто разделите ваш узел и создание отношений.

merge (d:Document{documentId:100}) on create set d.name='Doc1'
merge (a:Activity{name:'ijk'})
merge (d)-[:CONTAINS]->(a) 
return d, a

если ваши действия не являются глобально уникальными, то вы можете ОБЪЕДИНИТЬ их в контексте документа

merge (d:Document{documentId:100}) on create set d.name='Doc1'
merge (d)-[:CONTAINS]->(a:Activity{name:'ijk'})
return d, a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...