如何在Neo4j中复制路径?

时间:2016-02-23 19:17:37

标签: neo4j cypher

我想在Neo4j中重建整个节点和关系链。

我知道我可以使用p=保存路径,但CREATE不接受此信息。

MATCH p=(:Person)-[*]->(:Dog) CREATE p

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

正如您所见,您尝试的语法不起作用,因此必须尝试编写许多Cypher代码来复制每个路径的所有部分。

然而,事实证明目前无法单独使用Cypher来复制任意路径 - 因为缺少一些所需的功能。

例如,虽然您可以使用LABELS()函数来获取包含现有节点标签的集合,但无法从该数据创建/设置其他节点的标签。 Cypher仅支持硬编码标签(创建节点时,如CREATE (n:Foo);以及更新节点时,如SET n:Foo)。类似的考虑也适用于关系类型。

答案 1 :(得分:1)

  

警告:通常会创建与节点的其他关系,而不是图形数据库中的重复节点。

这不是严格 Cypher,但适用于the Neo4j shell。它应该适用于Neo4j 2.0.0。需要注意的是:这是一个实验性和不完整的功能。

dump MATCH (pers:Person)-[r*:OWNS]->(d:Dog) RETURN pers,r,d;

您可以直接执行返回的输出以复制节点。如果ID已经存在,则会更改。将使用相同的标签和属性创建节点和关系。

这对备份数据库非常方便。

More info on the dump command