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} 相同的效果。