apoc.refactor.cloneSubgraph过程
语法 |
|
||
描述 |
克隆给定的 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要克隆的节点。 |
|
|
|
要克隆的关系。如果留空,将克隆给定节点之间的所有关系。默认值为: |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
原始实体的内部 ID。 |
|
|
|
复制后的实体。 |
|
|
|
复制过程中发生的任何错误。 |
|
使用示例
本节中的示例基于以下示例图
CREATE (rootA:Root{name:'A'}),
(rootB:Root{name:'B'}),
(n1:Node{name:'node1', id:1}),
(n2:Node{name:'node2', id:2}),
(n3:Node{name:'node3', id:3}),
(n4:Node{name:'node4', id:4}),
(n5:Node{name:'node5', id:5}),
(n6:Node{name:'node6', id:6}),
(n7:Node{name:'node7', id:7}),
(n8:Node{name:'node8', id:8}),
(n9:Node{name:'node9', id:9}),
(n10:Node{name:'node10', id:10}),
(n11:Node{name:'node11', id:11}),
(n12:Node{name:'node12', id:12})
CREATE (rootA)-[:LINK]->(n1)-[:LINK]->(n2)-[:LINK]->(n3)-[:LINK]->(n4)
CREATE (n1)-[:LINK]->(n5)-[:LINK]->(n6)<-[:LINK]-(n7)
CREATE (n5)-[:LINK]->(n8)
CREATE (n5)-[:LINK]->(n9)-[:DIFFERENT_LINK]->(n10)
CREATE (rootB)-[:LINK]->(n11);
此过程克隆由节点列表和关系列表定义的子图。如果未提供关系,则会克隆给定节点之间的所有关系。当您希望确保克隆的子图不与原始节点连接,或不与子图外部的节点连接时,此功能非常有用。
我们可以从 apoc.path.subgraphAll 产生的输出中获取节点和关系,并在该过程的调用中过滤关系类型。
以下查询克隆了从 rootA 开始、由输出的 :LINK 关系组成的子树,并将该子图附加到 rootB。rootB 作为 rootA 的替身(standin),rootA 本身不会被克隆。
MATCH (rootA:Root{name:'A'}),
(rootB:Root{name:'B'})
CALL apoc.path.subgraphAll(rootA, {relationshipFilter:'LINK>'})
YIELD nodes, relationships
CALL apoc.refactor.cloneSubgraph(
nodes,
[rel in relationships WHERE type(rel) = 'LINK'],
{ standinNodes:[[rootA, rootB]] })
YIELD input, output, error
RETURN input, output, error;
| input | 输出 | 错误 (error) |
|---|---|---|
31378 |
(:Node {name: "node1", id: 1}) |
NULL |
31382 |
(:Node {name: "node5", id: 5}) |
NULL |
31379 |
(:Node {name: "node2", id: 2}) |
NULL |
31386 |
(:Node {name: "node9", id: 9}) |
NULL |
31383 |
(:Node {name: "node6", id: 6}) |
NULL |
31385 |
(:Node {name: "node8", id: 8}) |
NULL |
31380 |
(:Node {name: "node3", id: 3}) |
NULL |
31381 |
(:Node {name: "node4", id: 4}) |
NULL |