apoc.graph.fromDocument
| 此过程返回只能由其他 APOC 过程访问的虚拟节点和关系。欲了解更多信息,请参阅 虚拟节点与关系 (图投影)。 |
语法 |
|
||
描述 |
通过从给定 JSON 文件返回的数据中提取所有 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
用于生成图的 JSON 对象。 |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
生成的图。 |
|
配置参数
此过程支持以下配置参数
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
false |
持久化图,否则返回虚拟图。 |
|
|
type |
作为节点标签的字段名称。 |
|
|
id |
将成为所创建节点 ID 字段的文档字段名称(用于在节点之间创建关系时的节点解析)。 |
|
|
true |
如果缺少 id 字段值,则为其生成一个 UUID。 |
|
|
"" |
如果缺少标签字段值,则使用提供的默认标签。 |
|
|
false |
如果您想跳过 |
|
|
{} |
点击下方链接了解更多详情。 |
使用示例
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]] |
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 *
结果我们得到了一个包含两个节点和一个关系的虚拟图。
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 *
结果我们得到了一个包含两个节点和一个关系的虚拟图。
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 *
结果我们得到了一个包含两个节点和一个关系的虚拟图。
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 *
结果我们得到了一个包含三个节点和两个关系的虚拟图。
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"}});