根据Neo4j中的特定条件创建节点
如果满足某些条件,我想在数据库中创建一些新节点根据Neo4j中的特定条件创建节点,neo4j,Neo4j,如果满足某些条件,我想在数据库中创建一些新节点 MATCH (u:User)-[:has]->(a:Account)-[:initiated]->(l:Process) WHERE ID(l)=984 UNWIND [{mobile:123,email:'a@b.com'}, {mobile:456, email:'a1@b1.com'}] as x OPTIONAL MATCH (u1:User) WHERE u1.mobile = x.mobile OR u1.email =
MATCH (u:User)-[:has]->(a:Account)-[:initiated]->(l:Process) WHERE ID(l)=984
UNWIND [{mobile:123,email:'a@b.com'}, {mobile:456, email:'a1@b1.com'}] as x
OPTIONAL MATCH (u1:User) WHERE u1.mobile = x.mobile OR u1.email = x.email CASE u1 WHEN u1 IS NULL THEN CREATE (u)-[:pending]->(p:Pending {mobile: x.mobile, email: x.email})
ELSE CREATE (u1)-[:pending]->(p:Pending {mobile: x.mobile, email: x.email})
END
我想检查是否有手机或电子邮件用户存在。如果存在,我想创建附加到该节点(u1)的节点(p),否则我想创建附加到我的节点的节点,即(u)
不知何故,create在case中不起作用当前执行条件写入的唯一方法是使用
FOREACH/case WHEN
技巧。根据您的条件,您可以创建一个1元素或一个空数组,并使用FOREACH
对其进行迭代,例如
...
FOREACH(x in CASE WHEN u1 IS null THEN [1] ELSE [] END |
CREATE (u)-[:pending]->(p:Pending {mobile: x.mobile, email: x.email}))
FOREACH(x in CASE WHEN u1 IS NOT null THEN [1] ELSE [] END |
CREATE (u1)-[:pending]->(p:Pending {mobile: x.mobile, email: x.email}))
有关更多详细信息,请参阅。我尝试了此操作,但收到的错误消息为无效输入“|”:应为空格、注释“.”、节点标签“[”、“=~”、IN、开始、结束、包含、IS、“^'、“*”、“/”、“%”、“+”、“-”、“=”、“!=”、“、“=”、和XOR或结束(第2行,第53列(偏移量:293))“FOREACH(如果u1为空,则为x)[1]ELSE[]|“我忘记了
END
:FOREACH(如果u1为空,那么[1]ELSE[]END |创建(u)-[:pending]->(p:pending{mobile:x.mobile,email:x.email}))