apoc.merge.relationship过程
语法 |
|
||
描述 |
将给定的 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
关系的起始节点。 |
|
|
|
关系的类型。 |
|
|
|
始终参与合并的关系属性。 |
|
|
|
当关系被创建时进行合并的属性。 |
|
|
|
关系的结束节点。 |
|
|
|
当关系被匹配到时进行合并的属性。默认值为: |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
更新后的关系。 |
|
使用示例
本节中的示例基于以下图数据
CREATE (p:Person {name: "Tom Hanks"})
CREATE (m:Movie {title:"You've Got Mail"});
相比 Cypher 的 MERGE 子句,此过程提供了更灵活的关系合并方式。
下例展示了在 Tom Hanks 和 You’ve Got Mail 节点之间合并 ACTED_IN 关系的等效方法
apoc.merge.relationship
MATCH (p:Person {name: "Tom Hanks"})
MATCH (m:Movie {title:"You've Got Mail"})
CALL apoc.merge.relationship(p, "ACTED_IN",
{roles:['Joe Fox']},
{created: datetime()},
m,
{lastSeen: datetime()}
)
YIELD rel
RETURN rel;
MERGE 子句
MATCH (p:Person {name: "Tom Hanks"})
MATCH (m:Movie {title:"You've Got Mail"})
MERGE (p)-[rel:ACTED_IN {roles:['Joe Fox']}]->(m)
ON CREATE SET rel.created = datetime()
ON MATCH SET rel.lastSeen = datetime()
RETURN rel;
如果我们多次运行这些查询,将看到如下输出
| 关系 |
|---|
[:ACTED_IN {lastSeen: 2020-11-03T11:02:00.261Z, created: 2020-11-03T11:00:56.849Z, roles: ["Joe Fox"]}] |
但此过程主要用于合并具有动态关系类型或动态属性的关系。例如,我们可能希望合并一个以参数形式传入关系类型或属性的关系。
以下代码创建了 relationshipType 和 properties 参数
:param relType => ("ACTED_IN");
:param properties => ({roles: ["Joe Fox"]});
以下代码根据之前定义的参数,合并了一个具有特定关系类型和属性的关系
MATCH (p:Person {name: "Tom Hanks"})
MATCH (m:Movie {title:"You've Got Mail"})
CALL apoc.merge.relationship(p, $relType, $properties, {}, m, {})
YIELD rel
RETURN rel;
| 关系 |
|---|
[:ACTED_IN {roles: ["Joe Fox"]}] |