Neo4j 根据节点的属性之一有条件地创建关系

vis*_*tel 4 neo4j

我需要在两个节点之间创建两种不同类型的关系。关系的类型取决于节点的属性之一。

例如,

我有两个节点 USER 和 EVENT。我需要在他们之间建立两种关系。1. 邀请 2. 请求邀请

甚至节点也有属性 informOnly。

如果 informOnly 为 true,则创建“邀请”关系。否则创建“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
Run Code Online (Sandbox Code Playgroud)

Mic*_*ger 6

目前没有条件,但您可以通过迭代由 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
Run Code Online (Sandbox Code Playgroud)