我使用这个查询来创建一些关系,但我需要创建节点,如果它不存在,但合并属性为某些和其他记录创建它在合并的 id 上给出空值。
基本上,如果记录存在,它应该合并,否则它应该创建我该怎么做?
MATCH (p:person{username:'abc.com'})-[hc:HAS_RELATION]->(pp:person{username:'xyz.com'})
MERGE (con:ContactInfo{Id:hc.ContactInfoId})
ON MATCH SET con.Updated=timestamp(),hc.ContactInfoId=ID(con)
ON CREATE SET con:PersonContact,con.Created =timestamp(),con.Id=ID(con),hc.ContactInfoId=ID(con)
WITH con
Run Code Online (Sandbox Code Playgroud)
请帮忙
你正在做MERGE (con:ContactInfo{Id:hc.ContactInfoId}),但如果hc.ContactInfoId是 NULL,你会得到你的错误。
所以这意味着你的图中有一个HAS_RELATION没有ContactInfoId属性的关系。
为了避免你的错误,你可以使用coalescecypher 中的函数。此函数需要 2 个参数:如果第一个参数是NULL,则十个函数返回第二个参数。
所以也许你可以使用这个合并:MERGE (con:ContactInfo{Id:coalesce(hc.ContactInfoId, id(hc))})