apoc.create.virtual.fromNode

详细信息

语法

apoc.create.virtual.fromNode(node, propertyNames, config)

描述

从给定的现有 NODE 返回一个虚拟 NODE。该虚拟 NODE 仅包含所请求的属性。

参数

名称

类型

描述

节点

NODE

用于生成虚拟节点的原始节点。

propertyNames

LIST<STRING>

需要复制到虚拟节点的属性。

config

MAP

{ wrapNodeIds = false :: BOOLEAN }。默认值为 {}引入于 APOC 2025.01

返回

NODE

使用示例

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

CREATE (a:Account {type: 'checking', ownerName: 'Maria Perez', ownerId: '123456789', accountNumber: 101010101, routingNumber: 10101010, amount: 1000.00, bank: 'Best Bank'});
CREATE (p:Person {name: 'Jane Doe', birthdate: date('1990-01-13'), favoriteColor: 'green', favoriteDessert: 'ice cream', favoriteMusic: 'classical', favoriteBand: 'The Beatles', favoriteVacation: 'beach', favoriteAnimal: 'horse', favoriteBeverage: 'coffee', favoriteFlower: 'lily'});

apoc.create.virtual.fromNode 过程提供了一种仅可视化或返回所需数据的方法,从而隐藏任何不必要或敏感的部分。

下面的示例展示了如何使用该过程仅返回上述节点中非敏感的属性:

apoc.create.virtual.fromNode
MATCH (a:Account {accountNumber: 101010101})
RETURN apoc.create.virtual.fromNode(a, ['type','bank']);
结果
account

{"type":"checking","bank":"Best Bank"}

apoc.create.virtual.fromNode 过程还可用于简化具有大量属性的节点,只需显示对查询重要的属性即可。

下面的示例展示了这种用法:

apoc.create.virtual.fromNode
MATCH (p:Person {name: 'Jane Doe'})
RETURN apoc.create.virtual.fromNode(p, ['favoriteColor','favoriteAnimal','favoriteMusic']);
结果
favorites

{"favoriteAnimal":"horse","favoriteMusic":"classical","favoriteColor":│

"green"}

包装节点 (Wrapping nodes)

默认情况下,此函数会将节点的 ID 更改为负数,这代表虚拟节点。为了保留原始 ID,请使用配置项 { wrapNodeIds: true }

apoc.create.virtual.fromNode
CREATE (p:Person {name: 'Jane Doe'})
WITH apoc.create.virtual.fromNode(p, ['name'], { wrapNodeIds: true }) AS node
RETURN id(node) AS id;
结果
id

1