apoc.nodes.link过程
语法 |
|
||
描述 |
创建一个由给定的 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要链接的节点列表。 |
|
|
|
用于连接节点的名称关系类型。 |
|
|
|
|
|
| 此过程在本地实例上受到限制。若要使用它,必须解除限制。有关详细信息,请参阅 安装 → 加载并解除限制。 |
使用示例
本节中的示例基于以下示例图
CREATE (:Event {name: "Event 1", date: datetime("2019-06-01")})
CREATE (:Event {name: "Event 2", date: datetime("2019-06-04")})
CREATE (:Event {name: "Event 3", date: datetime("2019-06-08")});
我们可以通过在 Cypher 或 APOC 中运行以下查询,为这些事件创建一个链表:
apoc.nodes.link
MATCH (e:Event)
WITH e ORDER BY e.date
WITH collect(e) AS events
CALL apoc.nodes.link(events, "NEXT")
RETURN count(*);
使用 Cypher
MATCH (e:Event)
WITH e ORDER BY e.date
WITH collect(e) AS events
UNWIND range(0, size(events) - 2) AS x
WITH x, events[x] AS node1, events[x+1] AS node2
CREATE (node1)-[:NEXT]->(node2)
RETURN count(*);
我们可以使用 {avoidDuplicates: true} 配置来检查关系是否存在;若连续两次调用之前的查询,节点间会创建 2 个类型为 "NEXT" 的关系。相反,通过执行 CALL apoc.nodes.link(events, "NEXT", {avoidDuplicates: true}),将只会创建一个类型为 "NEXT" 的关系。
同样,对于等效的 Cypher 语句,将 CREATE 更改为 MERGE 将产生与 avoidDuplicates: true} 相同的效果。