Neo4j - 从嵌套 JSON 文件和列表创建节点
Neo4j - Create Nodes from nested JSON file and list
我是 Neo4j 的新手,尤其是 Cypher 查询。我正在尝试为 JSON 文件中的值创建节点,您可以在嵌套格式中看到它。使用 MERGE
因为我需要像 'Adam Smith' 这样的值作为下面嵌套列表中的单个节点。当 'organization' 不是 nested/list 格式时,它显然工作得很好。请看下面我的试用和评论。非常感谢您的帮助!
样本data.json
[ { 'organization': 'MIT',
'student_names': ['Adam Smith'],
'unique_id': 'ABC123'},
{ 'organization': 'Harvard',
'student_names': ['Adam Smith', 'Cate Scott'],
'unique_id': 'ABC124'},
{ 'organization': 'Harvard',
'student_names': ['Mandy T.', 'Bob Smith'],
'unique_id': 'ABC125'}]
为组织创建 2 个节点 - 有效
CALL apoc.load.json('file:///data.json') YIELD value as v
MERGE (o:org {name: v.organization})
// Added 2 labels, created 2 nodes, set 2 properties, completed after 5 ms.
不起作用
CALL apoc.load.json('file:///data.json') YIELD value as v
UNWIND v.student_names as s
MERGE(st:student {name: s.student_names})
错误:Neo.ClientError.Statement.TypeError: Type mismatch: expected a map but was String("Adam Smith")
正在寻找像这样解开的图表。我想我可以自己定义关系,我只是想看看如何开始创建节点。
ABC123 --> MIT --> Adam Smith
ABC124 --> Harvard --> Adam Smith
ABC124 --> Harvard --> Cate Scott
ABC125 --> Harvard --> Mandy T.
ABC125 --> Harvard --> Bob Smith
在您的第二个查询中,s
已经是一个学生的姓名,所以只需这样做:
CALL apoc.load.json('file:///data.json') YIELD value
UNWIND value.student_names AS s
MERGE(st:student {name: s})
我是 Neo4j 的新手,尤其是 Cypher 查询。我正在尝试为 JSON 文件中的值创建节点,您可以在嵌套格式中看到它。使用 MERGE
因为我需要像 'Adam Smith' 这样的值作为下面嵌套列表中的单个节点。当 'organization' 不是 nested/list 格式时,它显然工作得很好。请看下面我的试用和评论。非常感谢您的帮助!
样本data.json
[ { 'organization': 'MIT',
'student_names': ['Adam Smith'],
'unique_id': 'ABC123'},
{ 'organization': 'Harvard',
'student_names': ['Adam Smith', 'Cate Scott'],
'unique_id': 'ABC124'},
{ 'organization': 'Harvard',
'student_names': ['Mandy T.', 'Bob Smith'],
'unique_id': 'ABC125'}]
为组织创建 2 个节点 - 有效
CALL apoc.load.json('file:///data.json') YIELD value as v
MERGE (o:org {name: v.organization})
// Added 2 labels, created 2 nodes, set 2 properties, completed after 5 ms.
不起作用
CALL apoc.load.json('file:///data.json') YIELD value as v
UNWIND v.student_names as s
MERGE(st:student {name: s.student_names})
错误:Neo.ClientError.Statement.TypeError: Type mismatch: expected a map but was String("Adam Smith")
正在寻找像这样解开的图表。我想我可以自己定义关系,我只是想看看如何开始创建节点。
ABC123 --> MIT --> Adam Smith
ABC124 --> Harvard --> Adam Smith
ABC124 --> Harvard --> Cate Scott
ABC125 --> Harvard --> Mandy T.
ABC125 --> Harvard --> Bob Smith
在您的第二个查询中,s
已经是一个学生的姓名,所以只需这样做:
CALL apoc.load.json('file:///data.json') YIELD value
UNWIND value.student_names AS s
MERGE(st:student {name: s})