|| apoc.graph.fromDocument - APOC 核心文档 - Neo4j 文档

apoc.graph.fromDocument

此过程返回只能由其他 APOC 过程访问的虚拟节点和关系。欲了解更多信息,请参阅 虚拟节点与关系 (图投影)
详情

语法

apoc.graph.fromDocument(json [, config ]) :: (graph)

描述

通过从给定 JSON 文件返回的数据中提取所有 NODERELATIONSHIP 值来生成虚拟子图。

输入参数

名称

类型

描述

json

任意类型

用于生成图的 JSON 对象。

config

映射

{ write = false :: BOOLEAN, labelField = 'type' :: STRING. idField = 'id' :: STRING, generateID = true :: BOOLEAN, defaultLabel = '' :: STRING, skipValidation = false :: BOOLEAN, mappings = {} :: MAP }。默认值是:{}

返回参数

名称

类型

描述

graph

映射

生成的图。

配置参数

此过程支持以下配置参数

配置参数
名称 类型 默认值 描述

write

布尔值

false

持久化图,否则返回虚拟图。

labelField

字符串

type

作为节点标签的字段名称。

idField

字符串

id

将成为所创建节点 ID 字段的文档字段名称(用于在节点之间创建关系时的节点解析)。

generateId

布尔值

true

如果缺少 id 字段值,则为其生成一个 UUID。

defaultLabel

字符串

""

如果缺少标签字段值,则使用提供的默认标签。

skipValidation

布尔值

false

如果您想跳过 apoc.graph.fromDocument 中的验证过程。

mappings

MAP<STRING, STRING>

{}

点击下方链接了解更多详情。

使用示例

CALL apoc.graph.fromDocument("{'id': 1,'type': 'artist','name':'Genesis','members': ['Tony Banks','Mike Rutherford','Phil Collins'],'years': [1967, 1998, 1999, 2000, 2006],'albums': [{'type': 'album','id': 1,'producer': 'Jonathan King','title': 'From Genesis to Revelation'}]}", {write: false})
YIELD graph AS g
RETURN g.nodes AS nodes, g.relationships AS rels;
结果
节点 关系

[(:Artist {name: "Genesis", id: 1, type: "artist", years: [1967, 1998, 1999, 2000, 2006], members: ["Tony Banks", "Mike Rutherford", "Phil Collins"]}), (:Album {producer: "Jonathan King", id: 1, type: "album", title: "From Genesis to Revelation"})]

[[:ALBUMS]]

带 labelField 的 JSON 虚拟图
CALL apoc.graph.fromDocument("{'id': 1,'type': 'artist','name':'Genesis','members': ['Tony Banks','Mike Rutherford','Phil Collins'],'years': [1967, 1998, 1999, 2000, 2006],'albums': [{'type': 'album','id': 1,'producer': 'Jonathan King','title': 'From Genesis to Revelation'}]}", {write: false})
YIELD graph
RETURN *

结果我们得到了一个包含两个节点和一个关系的虚拟图。

apoc.graph.fromDocument 1
带 labelField 的 JSON 虚拟图
CALL apoc.graph.fromDocument('{"id":10,"myCustomType":"labelArtist","name":"Genesis","albums":[{"myCustomType":"labelAlbum","producer":"Jonathan King","id":20,"title":"From Genesis to Revelation"}]}', {labelField: "myCustomType"})
YIELD graph
RETURN *

结果我们得到了一个包含两个节点和一个关系的虚拟图。

apoc.graph.fromDocument with label type
带 labelField 和 idField 的 JSON 虚拟图
CALL apoc.graph.fromDocument('{"myCustomType":"labelArtist","name":"Genesis","myCustomId":1,"albums":[{"myCustomType":"labelAlbum","producer":"Jonathan King","myCustomId":1,"title":"From Genesis to Revelation"}]}',
{labelField: "myCustomType", idField: "myCustomId"})
YIELD graph
RETURN *

结果我们得到了一个包含两个节点和一个关系的虚拟图。

apoc.graph.fromDocument with label type and id field
带 mappings 的 JSON 虚拟图
CALL apoc.graph.fromDocument('{"id":1,"type":"Person","name":"Andrea","sizes":{"weight":{"value":70,"um":"Kg"},"height":{"value":174,"um":"cm"},"array":["foo","bar"]},"books":[{"title":"Flow My Tears, the Policeman Said","released":1974},{"title":"The man in the High Castle","released":1962}]}',
{mappings:{`$`:"Person:Reader{*,@sizes}",`$.books`:"Book{!title, released}"}})
yield graph
RETURN *

结果我们得到了一个包含三个节点和两个关系的虚拟图。

apoc.graph.fromDocument with mappings
relMapping 的 JSON 虚拟图

我们可以传递一个 relMapping 来自定义关系名称,传入一个以您要更改的关系作为键的映射。例如

CALL apoc.graph.fromDocument("{'id': 1,'type': 'artist','name':'Genesis','members': ['Tony Banks','Mike Rutherford','Phil Collins'],'years': [1967, 1998, 1999, 2000, 2006],'albums': [{'type': 'album','id': 1,'producer': 'Jonathan King','title': 'From Genesis to Revelation'}]}",
{relMapping: {albums: "CUSTOM_REL"}});
apoc.graph.fromDocument with relMapping
© . This site is unofficial and not affiliated with Neo4j, Inc.