无法在此处创建带标签或属性的节点。该变量已在Neo4j中在此上下文中声明

时间:2018-05-16 17:21:52

标签: neo4j cypher

我试图在Neo4j中运行下面的密码查询(3次合并声明)

MERGE (paymentinstrument{SENDER_CREDITCARD:'123444'})-[rPAYMENTINSTRUMENT:PROFILECHANGE_PI{}]->( profilechange )                     
    ON CREATE SET rPAYMENTINSTRUMENT.CREATETIMESTAMP = toInt('1413911269726') 
    ON MATCH SET rPAYMENTINSTRUMENT.UPDATETIMESTAMP = toInt('1413911269726') 
MERGE (profilechange{PROFILECHANGEIDENTIFIER:'ABCD'})-[rPROFILECHANGEDEVICE:HAS_DEVICE{}]->( device )                                
    ON CREATE SET rPROFILECHANGEDEVICE.CREATETIMESTAMP = toInt('1413911269726')                                                         
    ON MATCH SET rPROFILECHANGEDEVICE.UPDATETIMESTAMP = toInt('1413911269726') 
MERGE (profilechange{PROFILECHANGEIDENTIFIER:'ABCD'})-[rPROFILECHANGEIPADDRESS:HAS_IP{}]->( ipaddress )
    ON CREATE SET rPROFILECHANGEIPADDRESS.CREATETIMESTAMP = toInt('1413911269726') 
    ON MATCH SET rPROFILECHANGEIPADDRESS.UPDATETIMESTAMP = toInt('1413911269726')

遇到以下错误

  

无法在此处创建带有标签或属性的节点profilechange。该   变量已在此上下文中声明

是否有人对此问题有任何想法或解决方法?谢谢

1 个答案:

答案 0 :(得分:1)

你有两个合并开头 MERGE(profilechange {PROFILECHANGEIDENTIFIER:'ABCD'}) 所以,它就像你定义了两个同名的引用

第二次使用,应该是

 MERGE (profilechange)--

此外,在容易出错的情况下,语法很糟糕。

在“学习Neo4j”中,作者:)建议使用这种语法

 (reference:Label{key:'value'})-[r2:RELATIONNAME]->(reference2:Label{you:'got it'})