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

Graph Neo.ClientError.Statement.SemanticError:无法使用Id的null属性值合并节点,graph,neo4j,Graph,Neo4j,我使用这个查询来创建一些关系,但是如果节点不存在,但merge属性为某些记录创建了节点,而为merge属性的id为null,那么我需要创建节点 基本上,如果记录存在,它应该合并,否则它应该创建,我怎么做 MATCH (p:person{username:'abc.com'})-[hc:HAS_RELATION]->(pp:person{username:'xyz.com'}) MERGE (con:ContactInfo{Id:hc.ContactInfoId}) ON

我使用这个查询来创建一些关系,但是如果节点不存在,但merge属性为某些记录创建了节点,而为merge属性的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
请帮助

您正在执行合并con:ContactInfo{Id:hc.ContactInfoId},但是如果hc.ContactInfoId为空,您将获得您的错误

这意味着你有一个关系在你的图中没有ContactInfoId属性

为了避免错误,可以在cypher中使用coalesce函数。 此函数接受2个参数:如果第一个参数为NULL,则返回第二个参数

因此,也许您可以使用这个merge:merge-con:ContactInfo{Id:coaleschc.ContactInfoId,idhc}