如何在Neo4j中重命名关系?

时间:2012-12-11 08:55:44

标签: neo4j rename relationship keyword cypher

我只是在导入了大量节点后才意识到我创建了名为START的关系,这是一个保留关键字。通过Cypher控制台查询数据库因此总是抱怨保留的关键字:

  

SyntaxException:reserved keyword“start n = node(0)match n< - [:START] -r   返回计数(r)“

我想到的唯一解决方法是使用不同的名称创建新的复制关系,然后删除旧的复制关系。

是否有一种简单的方法可以重命名所有这些关系或某种方式来逃避Cypher中的保留关键字?

3 个答案:

答案 0 :(得分:21)

要进行相当于重命名的操作,您可以创建一个新的,并删除旧的,如下所示:

match (n1)-[old:`Start`]->(n2)
create (n1)-[new:StartDate]->(n2)
delete old

n.b。使用“Start”周围的反引号来逃避保留的关键字

答案 1 :(得分:4)

你是对的。您无法重命名已存在的关系。您必须run through all relationships,并行创建新的(包括所有属性),然后删除旧的。

您可能还想考虑使用反引号引用cypher查询中的保留字START,并保持关系原样:

start n=node(0) match n<-[:`START`]-r return count(r)

答案 2 :(得分:2)

match (n1)-[old:`Start`]->(n2)
create (n1)-[new:StartDate {propName:old.propName, ...}]->(n2)
delete old