我想从文件中的JSON项目创建一对多关系。具体来说,每个JSON项都包含一个作者及其出版的书籍ID。我有数据库中已经存在的作者节点和书籍节点。
数据如下:
{"id": "1", "name": "Dr. Suess", "books": [{"i": "100", "i": "101"}]}
{"id": "2", "name": "Shell Silverstein", "books": [{"i": "200", "i": "201"}]}
我正在尝试使用以下代码导入节点:
CALL apoc.load.json('file:/data.txt') YIELD value AS q
MATCH (a:Author {{id:q.id}})
UNWIND q.books as books
WITH a, books
MATCH (b:Books {{id:books.i}})
CREATE (a)-[:AUTHORED]->(b)
但是,这只导入了我期望的一部分节点。任何有关如何解决此问题的建议将不胜感激!
答案 0 :(得分:1)
好吧,如果您说不是所有的作者和书籍都被导入,则意味着这两个MATCH
语句找不到他们想要的内容。
一种可能的情况是,您将ID存储为整数,但是现在您尝试将其作为字符串进行匹配。利用提供的信息,很难假设其他任何事情。
我将MATCH
更改为MERGE
语句以查看是否存在问题。
CALL apoc.load.json('file:/data.txt') YIELD value AS q
MERGE (a:Author {{id:q.id}})
UNWIND q.books as books
WITH a, books
MERGE (b:Books {{id:books.i}})
CREATE (a)-[:AUTHORED]->(b)