Neo4j/Cypher 从多个嵌套的 json 创建节点



我正在尝试从下面的示例数据中创建图形。我是密码新手,从教程和堆栈帮助中学到了新东西。我被困在下面的问题上。我正在尝试从多个属性的嵌套数组创建节点。

以下链接:展开从 JSON 文件加载的多个不相关的数组

示例数据:

[   {   '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})您正在尝试合并属性名称上的类节点,但 json 中没有这样的属性。

我猜你想把它合并到unique_id财产上。因此,您可以更改您的 as

MERGE (c:Class {unique_id: class.unique_id})

查询的其余部分看起来正常。

最新更新