【问题标题】:Multiple conditions & query cypher / apoc多个条件和查询 cypher / apoc
【发布时间】:2020-01-19 22:44:01
【问题描述】:

我运行了以下查询以使用多个 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.case 。它的条件和查询列表
  • 如果phone1/phone2 分别为空,您的第二次/第三次apoc.do.when 调用不应执行任何操作。

标签: graph neo4j cypher neo4j-apoc


【解决方案1】:

在每个 CALL apoc.do.when 之间使用 UNION。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多