我想在Neo4j中重建整个节点和关系链。
我知道我可以使用p=
保存路径,但CREATE
不接受此信息。
MATCH p=(:Person)-[*]->(:Dog) CREATE p
有办法做到这一点吗?
答案 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已经存在,则会更改。将使用相同的标签和属性创建节点和关系。
这对备份数据库非常方便。