apoc.graph.fromDocument过程
| 此过程返回仅能被其他 APOC 过程访问的虚拟节点和关系。有关更多信息,请参阅 虚拟节点与关系(图投影)。 |
语法 |
|
||
描述 |
通过从给定 JSON 文件返回的数据中提取所有 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
用于生成图的 JSON 对象。 |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
生成的图。 |
|
配置参数
该过程支持以下配置参数
| 名称 | 类型 | 默认 | 描述 |
|---|---|---|---|
|
|
false |
持久化该图,否则返回一个虚拟图。 |
|
|
type |
用作节点标签的字段名称。 |
|
|
id |
将成为所创建节点 ID 字段的文档字段名称(用于在创建节点间关系时进行节点解析)。 |
|
|
true |
如果缺少 id 字段值,则为其生成一个 UUID。 |
|
|
"" |
如果缺少 label 字段值,则使用提供的默认标签。 |
|
|
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;
| 节点 | 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"}});