在Neo4j(4.1.3)中,如果一个节点不存在,如何逐个对3个节点进行匹配

在Neo4j(4.1.3)中,如果一个节点不存在,如何逐个对3个节点进行匹配,neo4j,Neo4j,我有两名员工,承包商。我需要首先在Employees中获取姓名的id,如果在Contractors中找不到,则在Contractors中仍然找不到默认姓名的id。到目前为止,我有以下信息,但我没有正确的IF systax WITH row WHERE row.CREATED_BY is not null and row.CREATED_BY <> 'None' CALL apoc.when(row.CREATED_BY_NTID IS NOT NULL, &q

我有两名员工,承包商。我需要首先在Employees中获取姓名的id,如果在Contractors中找不到,则在Contractors中仍然找不到默认姓名的id。到目前为止,我有以下信息,但我没有正确的IF systax

WITH row WHERE row.CREATED_BY is not null and row.CREATED_BY <> 'None'
  CALL apoc.when(row.CREATED_BY_NTID IS NOT NULL,
          "MATCH (p:Employee {name: row.CREATED_BY}) WHERE p.account ENDS WITH row.CREATED_BY_NTID return p",
          "MATCH (p:Employee {name: row.CREATED_BY}) return p",
          {row:row}) yield value
With row, value.p as p
  IF value.p IS null
    CALL apoc.when(row.CREATED_BY_NTID IS NOT NULL,
          "MATCH (p:Contractor {name: row.CREATED_BY}) WHERE p.account ENDS WITH row.CREATED_BY_NTID return p",
          "MATCH (p:Contractor {name: row.CREATED_BY}) return p",
          {row:row}) yield value
With row, value.p as p
  IF value.p IS null
        match (p:Employee) where p.name starts with 'XXXXXXX' return p
行,其中row.CREATED_BY不为null,row.CREATED_BY“None”
调用apoc.when(row.CREATED_BY_NTID不为空,
“匹配(p:Employee{name:row.CREATED_BY}),其中p.account以row.CREATED_BY_返回p结尾”,
“匹配(p:Employee{name:row.CREATED_BY})返回p”,
{row:row})屈服值
对于行,value.p作为p
如果value.p为空
调用apoc.when(row.CREATED_BY_NTID不为空,
“匹配(p:Contractor{name:row.CREATED_BY}),其中p.account以row.CREATED_BY_返回p结尾”,
“匹配(p:Contractor{name:row.CREATED_BY})返回p”,
{row:row})屈服值
对于行,value.p作为p
如果value.p为空
匹配(p:Employee),其中p.name以“XXXXXXX”开头返回p

我能够在apoc.when中添加多个条件(出于某种原因,当我发布时,它不起作用,可能我有其他问题)


您使用的是neo4j 4.x吗?是的,我使用的是4.1.3-还编辑了我的问题。谢谢
WITH row 
  CALL apoc.when(row.CREATED_BY_NTID IS NOT NULL,
          "MATCH (p:Employee {name: row.CREATED_BY}) WHERE p.account ENDS WITH row.CREATED_BY_NTID return p",
          "MATCH (p:Employee {name: row.CREATED_BY}) return p",
          {row:row}) yield value
With row, value.p as p
    CALL apoc.when(row.CREATED_BY_NTID IS NOT NULL AND p is NULL,
          "MATCH (p:Contractor {name: row.CREATED_BY}) WHERE p.account ENDS WITH row.CREATED_BY_NTID return p",
          "MATCH (p:Contractor {name: row.CREATED_BY}) return p",
          {row:row}) yield value
With row, value.p as p
CALL apoc.when(p is NULL,
        "match (p:Employee) where p.name starts with 'XXXXXXX' return p", "", {row:row}) yield value
....