繁体   English   中英

如何在neo4j中循环创建关系

[英]how to create relationships in loop in neo4j

我正在尝试与列表中的所有ID建立好友关系,但出现错误:

Node  already exists with label User and property "id"=[2]
 Neo.ClientError.Schema.ConstraintViolation

这些ID基本上已经存在,我只想使用for-each一次创建多个ID的朋友关系,我该如何实现这一目标,或者还有其他方法可以做到这一点? 我非常感谢您的帮助。

MATCH (u:User {id:"3"})
FOREACH (id in ["2","4","5"] |
  MERGE (u)-[:FRIEND]->(:User {id:id}))

由于用户已经存在,因此有一种更简单的方法:

MATCH (u:User {id:"3"})
MATCH (friends:User) WHERE friends.id IN ["2","4","5"]
MERGE (u)-[:FRIEND]->(friends)

问题是MERGE的用法。 如果您不希望在节点之间不存在任何模式的情况下重新创建任一节点,则合并需要您绑定关系的两端。 u已绑定,但是因为没有u与其他用户的FRIEND关系,所以整个模式都是从u创建的,带有FRIEND关系和新的User节点。

您无法在FOREACH中匹配用户,因此,请使用

MATCH (u:User {id:"3"})
match (fb:User) 
where fb.id in ["2","4","5"] 
MERGE (u)-[:FRIEND]->(fb)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM