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



我使用此查询来创建一些关系,但是如果节点不存在,我需要创建节点,但是合并属性为某些记录创建,而对于其他记录,它会在id上为合并提供null。

基本上,如果记录存在,它应该合并,否则它应该创建我该怎么做?

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

请帮忙

您正在执行MERGE (con:ContactInfo{Id:hc.ContactInfoId}),但是如果hc.ContactInfoId为 NULL,您将获得错误。

因此,这意味着您的图中有一个关系HAS_RELATION,没有ContactInfoId属性。

为了避免您的错误,您可以在密码中使用coalesce函数。 这个函数需要 2 个参数:如果第一个是NULL,十个函数返回第二个参数。

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

最新更新