apoc.create.setRelProperties

此过程已弃用。如需动态设置属性,请改用 Cypher 的 SET 子句。

详细信息

语法

apoc.create.setRelProperties(rels, keys, values) :: (rel)

描述

RELATIONSHIP(关系)值上设置给定的属性。

输入参数

名称

类型

描述

rels

ANY

要设置属性的关系。

keys

LIST<STRING>

要在给定关系上设置的属性键。

值 (values)

LIST<ANY>

要在给定关系上设置的属性值。

返回参数

名称

类型

描述

关系

RELATIONSHIP

更新后的关系。

使用 Cypher 设置属性

无需使用 APOC,即可在 Cypher 中动态引用属性。

用于在节点或关系上动态设置属性的 Cypher 语法
SET n[key]

动态计算的键必须求值为 STRING(字符串)值。有关更多信息,请参阅 Cypher 手册 → 动态设置或更新属性

使用示例

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

CREATE (jennifer:Person {name: "Jennifer", community: 1, partition: 4})
CREATE (karin:Person {name: "Karin", community: 4, partition: 2})
CREATE (elaine:Person {name: "Elaine", community: 3, partition: 3})
MERGE (jennifer)-[:FRIENDS {since: datetime("2019-06-01")}]-(karin)
MERGE (jennifer)-[:FRIENDS {since: datetime("2019-05-04")}]-(elaine);

我们可以使用 APOC 和 Cypher 复制所有关系属性

apoc.create.setRelProperties
MATCH (:Person)-[friends:FRIENDS]->(:Person)
WITH friends, keys(friends) AS keys
CALL apoc.create.setRelProperties(friends,[k in keys | k + "Copy"], [k in keys | friends[k]])
YIELD rel
RETURN startNode(rel).name AS start, rel, endNode(rel).name AS end;
使用 Cypher 的动态属性
MATCH (p1:Person)-[friends:FRIENDS]->(p2:Person)
FOREACH (k IN keys(friends) | SET friends[k + "Copy"] = friends[k])
RETURN DISTINCT p1.name AS start, friends, p2.name AS end;
结果
开始 关系 结束

"Jennifer"

[:FRIENDS {sinceCopy: 2019-05-04T00:00Z, since: 2019-05-04T00:00Z}]

"Elaine"

"Jennifer"

[:FRIENDS {sinceCopy: 2019-06-01T00:00Z, since: 2019-06-01T00:00Z}]

"Karin"