我需要在两个节点之间创建两种不同类型的关系。关系类型取决于节点的一个属性。
例如,
我有两个节点USER和EVENT。我有两种关系在他们之间创造。 邀请 2. requestToInvite
偶数节点有属性inviteOnly。
创建"邀请"如果inviteOnly为true,则为relationship。否则创建" requestToInvite"关系。
这就是我想要的:
MATCH (u:User)
WHERE ID(u) = 13
WITH u
MATCH (e:Events)
WHERE ID(e) = 0
WITH u,e
CREATE (u)-[:inviteONLYTrue]->(e) WHERE e.inviteOnly = true
CREATE (u)-[:inviteONLYFALSE]->(e) WHERE e.inviteOnly = false
WITH u,e
RETURN u,e
答案 0 :(得分:2)
目前没有条件,但您可以通过迭代由CASE语句创建的零或单元素列表来解决它。
MATCH (u:User) WHERE ID(u) = 13
MATCH (e:Events) WHERE ID(e) = 0
FOREACH (_ in case e.inviteOnly when true then [1] else [] end |
CREATE (u)-[:inviteONLYTrue]->(e) )
FOREACH (_ in case e.inviteOnly when false then [1] else [] end |
CREATE (u)-[:inviteONLYFALSE]->(e) )
RETURN u,e
答案 1 :(得分:0)
APOC Procedures刚刚更新了对条件密码执行的支持,但在这种特殊情况下,您只需要一种与动态关系类型创建关系的方法。 APOC也有这样的程序。这是一个例子:
MATCH (u:User)
WHERE ID(u) = 13
WITH u
MATCH (e:Events)
WHERE ID(e) = 0
WITH u,e, CASE WHEN e.inviteOnly THEN 'inviteONLYTrue' ELSE 'inviteONLYFALSE' END as relType
CALL apoc.create.relationship(u, relType, {}, e) YIELD rel
RETURN u,e