首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当节点已存在时,在NEO4J中使用展开创建多个节点

当节点已存在时,在NEO4J中使用展开创建多个节点
EN

Stack Overflow用户
提问于 2018-06-04 08:19:47
回答 1查看 2.3K关注 0票数 1

我正在使用UNWIND在NEO4j中创建多个节点。问题是,如果其中一个节点是重复的,它将被拒绝,整个查询将失败。我希望能够在相同的节点之间创建多个关系,如果它们已经存在的话。例如,一个朋友可以收到来自同一个人的多个邀请。所以我有一个对象数组{email: xxx@mail.com},{email:yyy@mymail.com},...被邀请和赞助商sponsorEmail的电子邮件。由于对电子邮件有限制,因此尝试创建副本将失败,并拒绝整个查询。下面的代码在没有副本的情况下运行良好。

代码语言:javascript
复制
MATCH (s {email: 'sponsor@gmail.com'})
UNWIND $arrayOfObjects as invitees
CREATE (i:Invitee) MERGE (s)-[r:INVITED {since: timestamp()}]->(i)
SET i=invitees

我已经尝试替换MERGE和CREATE,以为MERGE会找到匹配并继续创建关系,但没有成功。我仍然收到重复错误。除了在执行查询之前清理arrayOfObjects之外,还有其他方法可以做到这一点吗?我想要的是复制不会失败,而是创建与现有被邀请者节点的关系。

EN

回答 1

Stack Overflow用户

发布于 2018-06-05 19:59:08

提交的两个答案都是很好的答案。我提交了这个答案,并为以后的人提供了一些细微的差别。该问题的主要目标是能够为尚未接受的朋友创建多个邀请,并能够可视化这些邀请。以下是我决定的内容:

代码语言:javascript
复制
WITH ['tom@abc.com', 'tony@mymail.com',michael@gmail.com'] AS coll
UNWIND coll AS invitee
WITH DISTINCT invitee
MATCH (s:Sponsor {email: 'mary@gmail.com'})
MERGE (i:Invitee {email: invitee})
CREATE (s)-[r:INVITED {since: timestamp()}]->(i)
RETURN r;   

这允许我为发送给同一个人的每个邀请创建多个关系,但只有在发送到我可以轻松查看的不同times....which时才能创建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50672125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档