У меня есть список адресов электронной почты, которые я использую для создания узлов. Однако, если один из этих адресов электронной почты уже существует, я не хочу получать сообщение об ошибке CATCH «.... узел уже существует», так как это уничтожит весь запрос, и ни один из узлов не будет создан. Поэтому я использую MERGE, затем ON CREATE, чтобы проверить существование адреса электронной почты перед созданием узла. Проблема в том, что мне нужно создать связь со вторым узлом, поэтому после MERGE и ON CREATE я должен использовать WITH .... CREATE для создания отношений, и здесь кроется проблема ... WITH не находится в области видимости. 'ON CREATE, поэтому CREATE (a) - [r] -> (b) теперь пытается создать узел с адресом электронной почты, который я пропустил в MERGE выше ... в результате получается CATCH' ... уже существует ... 'ошибка в моем запросе. Вот мой САЙФЕР:
commons.session
.run['tom@abc.com', 'tony@mymail.com',michael@gmail.com'] AS coll
UNWIND coll AS invitee
WITH DISTINCT invitee
MERGE (i {email: invitee})
ON CREATE
SET i:Invitee
WITH i,invitee
CREATE (s:Person {email: 'xyz123@abc.com})-[r:INVITED]->(i)
RETURN i.email AS emails, COUNT(r) AS invitees)
То, что я ожидаю вернуть, это список только тех адресов электронной почты, где были созданы узел и связь. По сути, мне нужно быть в области действия ON CREATE, так как дубликат был бы пропущен. Любая помощь в создании этой работы будет принята с благодарностью.