apoc.merge.node.eager
语法 |
|
||
描述 |
将给定的 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
用于生成的 MERGE 语句的标签列表。 |
|
|
|
节点上始终合并的属性。 |
|
|
|
在创建节点时合并的属性。默认值为: |
|
|
|
在匹配节点时合并的属性。默认值为: |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
更新后的节点。 |
|
使用示例
此过程提供了一种比 Cypher 的 MERGE 子句更灵活的节点合并方式。
以下示例展示了合并具有 Person 和 Actor 标签,以及 name 属性为 "Tom Hanks" 的节点的等效方法
apoc.merge.node.eager
CALL apoc.merge.node.eager(
["Person", "Actor"],
{name: "Tom Hanks"},
{created: datetime()},
{lastSeen: datetime()}
);
MERGE 子句
MERGE (node:Person:Actor {name: "Tom Hanks"})
ON CREATE SET node.created = datetime()
ON MATCH SET node.lastSeen = datetime()
RETURN node;
| node |
|---|
(:Person:Actor {name: "Tom Hanks", created: 2020-11-24T11:33:39.319Z}) |
但此过程主要用于合并具有动态标签或属性的节点。例如,我们可能希望创建具有作为参数传入的标签或属性的节点。
以下创建 labels 和 properties 参数
:param labels => (["Human", "MovieStar"]);
:param identityProperties => ({name: "Tom Cruise", placeOfBirth: "Syracuse, New York, United States"});
以下根据先前定义的参数创建具有标签和属性的节点
CALL apoc.merge.node.eager($labels, $identityProperties);
| node |
|---|
(:Human:MovieStar {name: "Tom Cruise", placeOfBirth: "Syracuse, New York, United States"}) |