设置新关系并将以前的关系保存为 neo4j 中的旧关系

5us2dqdw  于 2022-10-01  发布在  其他
关注(0)|答案(1)|浏览(126)

我正在尝试将数据从SQL数据库传输到neo4j。我已经在neo4j中创建了公司节点、编号节点以及它们之间的关系。

(n:company{un_id:’11111’})-[r:using]->(m:phonenumber{N:‘555112233’})

有时,公司在改变它的号码,我想建立新的关系,比如

Match
(n:company{un_id:’11111’}),
(m:phonenumber{N:‘555445566’})
Merge
(n)-[r:using]->(m)
Return id(r)

因此,如果公司和旧电话号码之间没有更多的关系,我如何将以前的关系设置为旧关系?

ftf50wuq

ftf50wuq1#

在关系上使用status属性可能会对您有所帮助,例如

WITH '555445566' AS newNumber,
       '11111' AS companyID

//set existing r.status to 'old'
MATCH (n:company {un_id:companyID})-[r:using]->(ph:phonenumber)
WHERE ph.N <> newNumber AND r.status <> 'old'
SET r.status = 'old'

// make sure to remove duplicates in case previous statement returns multiples
WITH DISTINCT newNumber, n

// create the new rel
MERGE (newph:phonenumber {N:newNumber})
MERGE (n)-[r:using {status:'current'}]->(newph) 
RETURN id(r)

相关问题