|| apoc.merge.node.eager - APOC 核心文档 - Neo4j 文档

apoc.merge.node.eager

详情

语法

apoc.merge.node.eager(labels, identProps [, onCreateProps, onMatchProps ]) :: (node)

描述

将给定的 NODE 值与给定的动态标签积极合并。

输入参数

名称

类型

描述

labels

LIST<STRING>

用于生成的 MERGE 语句的标签列表。

identProps

MAP

节点上始终合并的属性。

onCreateProps

MAP

在创建节点时合并的属性。默认值为:{}

onMatchProps

MAP

在匹配节点时合并的属性。默认值为:{}

返回参数

名称

类型

描述

node

NODE

更新后的节点。

使用示例

此过程提供了一种比 Cypher 的 MERGE 子句更灵活的节点合并方式。

以下示例展示了合并具有 PersonActor 标签,以及 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})

但此过程主要用于合并具有动态标签或属性的节点。例如,我们可能希望创建具有作为参数传入的标签或属性的节点。

以下创建 labelsproperties 参数

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

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