【问题标题】:Neo4j - Create Nodes from nested JSON file and listNeo4j - 从嵌套的 JSON 文件和列表创建节点
【发布时间】:2019-08-06 19:16:47
【问题描述】:

我是 Neo4j 的新手,尤其是 Cypher 查询。我正在尝试为 JSON 文件中的值创建节点,因为您可以在嵌套格式中看到它。使用MERGE,因为我需要像'Adam Smith' 这样的值作为下面嵌套列表中的单个节点。当“组织”不是嵌套/列表格式时,它显然运作良好。请参阅下面的我的试用和 cmets。非常感谢您的帮助!

示例数据.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

【问题讨论】:

    标签: neo4j cypher neo4j-apoc


    【解决方案1】:

    在您的第二个查询中,s 已经是一个学生的姓名,所以只需这样做:

    CALL apoc.load.json('file:///data.json') YIELD value
    UNWIND value.student_names AS s
    MERGE(st:student {name: s})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多