|| apoc.merge.relationship - APOC 核心文档 - Neo4j 文档

apoc.merge.relationship

详情

语法

apoc.merge.relationship(startNode, relType, identProps, onCreateProps, endNode [, onMatchProps ]) :: (rel)

描述

将给定的 RELATIONSHIP 值与给定的动态类型/属性合并。

输入参数

名称

类型

描述

startNode

NODE

关系的起始节点。

relType

STRING

关系的类型。

identProps

MAP

关系上始终合并的属性。

onCreateProps

MAP

创建关系时合并的属性。

endNode

NODE

关系的结束节点。

onMatchProps

MAP

匹配关系时合并的属性。默认值为:{}

返回参数

名称

类型

描述

rel

RELATIONSHIP

更新后的关系。

使用示例

本节中的示例基于以下图谱

CREATE (p:Person {name: "Tom Hanks"})
CREATE (m:Movie {title:"You've Got Mail"});

此过程提供了比 Cypher 的 MERGE 子句更灵活的关系合并方式。

以下示例展示了在 Tom HanksYou’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;

如果多次运行这些查询,将看到如下所示的输出

结果
rel

[:ACTED_IN {lastSeen: 2020-11-03T11:02:00.261Z, created: 2020-11-03T11:00:56.849Z, roles: ["Joe Fox"]}]

但此过程主要用于合并具有动态关系类型或动态属性的关系。例如,我们可能希望合并一个其关系类型或属性作为参数传入的关系。

以下创建 relationshipTypeproperties 参数

: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"]}]

© . This site is unofficial and not affiliated with Neo4j, Inc.