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 关系的等效方法
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;
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;
如果多次运行这些查询,将看到如下所示的输出
| 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;
| rel |
|---|
[:ACTED_IN {roles: ["Joe Fox"]}] |