Neo.ClientError.Statement.SemanticError:无法使用 Id 的空属性值合并节点

use*_*163 2 graph neo4j

我使用这个查询来创建一些关系,但我需要创建节点,如果它不存在,但合并属性为某些和其他记录创建它在合并的 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)

请帮忙

log*_*ima 5

你正在做MERGE (con:ContactInfo{Id:hc.ContactInfoId}),但如果hc.ContactInfoId是 NULL,你会得到你的错误。

所以这意味着你的图中有一个HAS_RELATION没有ContactInfoId属性的关系。

为了避免你的错误,你可以使用coalescecypher 中的函数。此函数需要 2 个参数:如果第一个参数是NULL,则十个函数返回第二个参数。

所以也许你可以使用这个合并:MERGE (con:ContactInfo{Id:coalesce(hc.ContactInfoId, id(hc))})