apoc.refactor.collapseNode过程
语法 |
|
||
描述 |
折叠给定的 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要折叠的节点。节点可以是 |
|
|
|
生成的关联关系类型名称。 |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
给定关联关系的 ID。 |
|
|
|
更新类型后的新关联关系的 ID。 |
|
|
|
如果发生错误,则返回错误消息。 |
|
使用 Cypher 重构节点
在 Cypher 中,无需使用 APOC 即可动态引用节点标签和关系类型。
用于动态创建、匹配和合并标签与类型的 Cypher 语法
CREATE (n1:$(label))-[r:$(type)]->(n2:$(label))
MERGE (n1:$(label))-[r:$(type)]->(n2:$(label))
MATCH (n1:$(label))-[r:$(type)]->(n2:$(label))
动态计算出的类型必须求值为 STRING 或 LIST<STRING>。更多信息,请参阅 Cypher 手册 → CREATE、MERGE、MATCH。
使用 CALL {…} IN CONCURRENT TRANSACTIONS 可以在 Cypher 中实现批处理和并行执行。有关更多信息,请参阅 事务中的 CALL 子查询 → 并发事务。
使用示例
本节中的示例基于以下示例图
CREATE (flight:Flight {number: "BA001"})
CREATE (origin:Airport {code: "LHR"})
CREATE (destination:Airport {code: "AMS"})
CREATE (flight)<-[:OUT]-(origin)
CREATE (flight)-[:IN]->(destination);
以下查询将 Flight 节点折叠,并使用 APOC 和 Cypher 将其替换为 CONNECTED_TO 关系
apoc.refactor.collapseNode
MATCH (flight:Flight {number: "BA001"})
CALL apoc.refactor.collapseNode([flight],'CONNECTED_TO')
YIELD input, output
RETURN input, output;
使用 Cypher
MATCH (flight:Flight {number: "BA001"})
CALL (flight) {
MATCH p=(a)-[]-(f)-[]-(b)
WITH p, a, f, b LIMIT 1
CREATE (a)-[r:CONNECTED_TO]->(b)
SET r = properties(f)
DETACH DELETE f
RETURN r AS newRel
}
RETURN newRel
| input | 输出 |
|---|---|
10 |
[:CONNECTED_TO {number: "BA001"}] |
如果我们执行此查询,将得到以下图形