Graph 多重条件&;查询密码/apoc

Graph 多重条件&;查询密码/apoc,graph,neo4j,cypher,neo4j-apoc,Graph,Neo4j,Cypher,Neo4j Apoc,我运行以下查询以使用多个apoc.do.when,但似乎只有我的第一个apoc.do.when正在执行 load csv from "file:///D:leads.csv" as row FIELDTERMINATOR ',' WITH row[0] as id, row[1] as fname, row[2] as lname, row[4] as email1, row[5] as email2, row[6] as phone1, row[7] as phone2, row[8] as

我运行以下查询以使用多个apoc.do.when,但似乎只有我的第一个apoc.do.when正在执行

load csv from "file:///D:leads.csv"
as row
FIELDTERMINATOR ',' 
WITH row[0] as id,
row[1] as fname,
row[2] as lname,
row[4] as email1,
row[5] as email2,
row[6] as phone1,
row[7] as phone2,
row[8] as phone3,
split(row[11]," ") as birthDay
LIMIT 5

MERGE (l:Lead {id:id})
with l as leadRef,email1,email2,phone1,phone2,phone3,fname,lname,id

CALL apoc.do.when(email1 is not null,'MERGE (e1:Email {value:email}) MERGE (l)-[r:Has_Email]-> 
(e1)','',{email:email1,l:leadRef}) YIELD value WITH value AS 
ignored,leadRef,email1,email2,phone1,phone2,phone3,fname,lname,id

CALL apoc.do.when(phone1 is not null,'MERGE (p1:Phone {value:phone}) MERGE (l)-[r:Has_Phone]-> 
(p1)','',{phone:phone1,l:leadRef}) YIELD value WITH value AS 
ignored2,leadRef,email1,email2,phone1,phone2,phone3,fname,lname,id

CALL apoc.do.when(phone2 is not null,'MERGE (p2:Phone {value:phone}) MERGE (l)-[r:Has_Phone]-> 
(p2)','',{phone:phone2,l:leadRef}) YIELD value WITH value AS 
ignored3,leadRef,email1,email2,phone1,phone2,phone3,fname,lname,id

return true

是否有一种基于多个条件执行多个查询的方法?不中断第一个语句

利用每次调用apoc.do.when之间的联合。

您可以尝试apoc.do.case。当
phone1
/
phone2
分别为空时,您的第二个/第三个
apoc.do.when
调用不应该执行任何操作。