ulk*_*kas 12 rename keyword relationship neo4j cypher
我只是在导入大量节点后才意识到我创建START了一个名为的关系,这是一个保留关键字.通过Cypher控制台查询数据库因此总是抱怨保留的关键字:
语法异常:保留关键字"start n = node(0)match n < - [:START] -r return count(r)"
我想到的唯一解决方法是使用不同的名称创建新的复制关系,然后删除旧的复制关系.
是否有一种简单的方法可以重命名所有这些关系或某种方式来逃避Cypher中的保留关键字?
Job*_*Job 24
要进行相当于重命名的操作,您可以创建一个新的并重命名,如下所示:
match (n1)-[old:`Start`]->(n2)
create (n1)-[new:StartDate]->(n2)
delete old
Run Code Online (Sandbox Code Playgroud)
nb使用"Start"周围的反引号来逃避保留的关键字
小智 6
您可以使用apoc插件重命名标签和关系。您还可以使用它来选择要重命名的关系子集。例如,下面的查询将仅重命名 Jim 和 Alistair 之间的关系。
MATCH (:Engineer {name: "Jim"})-[rel]->(:Engineer {name: "Alistair"})
WITH collect(rel) AS rels
CALL apoc.refactor.rename.type("COLLEAGUES", "FROLLEAGUES", rels)
YIELD committedOperations
RETURN committedOperations
Run Code Online (Sandbox Code Playgroud)
你是对的。您不能重命名已经存在的关系。您必须遍历所有关系,并行创建新关系(包括所有属性),然后删除旧关系。
您可能还需要考虑START在密码查询中用反引号引起来的保留词,并保持它们的关系不变:
start n=node(0) match n<-[:`START`]-r return count(r)
Run Code Online (Sandbox Code Playgroud)