繁体   English   中英

如何重命名 Neo4j 中的关系?

[英]How do I rename relationships in Neo4j?

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

SyntaxException:保留关键字“start n=node(0) match n<-[:START]-r return count(r)”

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

有没有一种简单的方法可以重命名所有这些关系或某种方法来转义 Cypher 中的保留关键字?

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

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

nb使用“Start”周围的反引号来逃避保留的关键字

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

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

start n=node(0) match n<-[:`START`]-r return count(r)
match (n1)-[old:`Start`]->(n2)
create (n1)-[new:StartDate {propName:old.propName, ...}]->(n2)
delete old

您可以使用apoc插件重命名标签和关系。 您还可以使用此对 select 关系的子集进行重命名。 例如,下面的查询将仅重命名 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM