Neo4j/Cypher 从多个嵌套创建节点 json
Neo4j/Cypher Create nodes from multiple nested json
我正在尝试根据下面的示例数据创建图表。我是 cypher 的新手,从教程和堆栈帮助中学到了新东西。我被困在下面的问题上。我正在尝试从多个属性的嵌套数组创建节点。
继 link 之后:
示例数据:
[ { 'organization': ['MIT','Univ. of CT'],
'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'}]
这是我尝试过的:
CALL apoc.load.json('file:///test2.json') YIELD value AS class
MERGE (c:Class {name: class.name})
SET
c.organization = class.organization,
c.student_names = class.student_names
WITH c, class
UNWIND class.organization AS org
MERGE (o:Organization {name: org})
MERGE (o)-[:ACCEPTED]->(c)
WITH c, class
UNWIND class.student_names AS student
MERGE (s:StudentName {name: student})
MERGE (s)-[:ATTENDS]->(o)
我一直收到错误 Neo.ClientError.Statement.SemanticError: Cannot merge node using null property value for name
。我在数据中没有看到任何空值。是什么原因造成的?我怎样才能解决这个问题?谢谢!!!
如果要合并的 属性 具有空值,则 MERGE 不起作用。
在这里,MERGE (c:Class {name: class.name})
您正在尝试合并 属性 name 上的 Class 节点,但没有这样的 属性 在 json.
我猜你想在 unique_id 属性 上合并它。所以你可以改变你的 as
MERGE (c:Class {unique_id: class.unique_id})
查询的其余部分看起来没问题。
我正在尝试根据下面的示例数据创建图表。我是 cypher 的新手,从教程和堆栈帮助中学到了新东西。我被困在下面的问题上。我正在尝试从多个属性的嵌套数组创建节点。
继 link 之后:
示例数据:
[ { 'organization': ['MIT','Univ. of CT'],
'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'}]
这是我尝试过的:
CALL apoc.load.json('file:///test2.json') YIELD value AS class
MERGE (c:Class {name: class.name})
SET
c.organization = class.organization,
c.student_names = class.student_names
WITH c, class
UNWIND class.organization AS org
MERGE (o:Organization {name: org})
MERGE (o)-[:ACCEPTED]->(c)
WITH c, class
UNWIND class.student_names AS student
MERGE (s:StudentName {name: student})
MERGE (s)-[:ATTENDS]->(o)
我一直收到错误 Neo.ClientError.Statement.SemanticError: Cannot merge node using null property value for name
。我在数据中没有看到任何空值。是什么原因造成的?我怎样才能解决这个问题?谢谢!!!
如果要合并的 属性 具有空值,则 MERGE 不起作用。
在这里,MERGE (c:Class {name: class.name})
您正在尝试合并 属性 name 上的 Class 节点,但没有这样的 属性 在 json.
我猜你想在 unique_id 属性 上合并它。所以你可以改变你的 as
MERGE (c:Class {unique_id: class.unique_id})
查询的其余部分看起来没问题。