Как создать отношения один ко многим из JSON с Neo4j Cypher - PullRequest
0 голосов
/ 03 мая 2019

Я хотел бы создать отношения один ко многим из элементов JSON в файле.В частности, каждый элемент JSON содержит автора и идентификатор опубликованных книг.У меня есть авторские узлы и книжные узлы, которые уже существуют в базе данных.

Данные выглядят следующим образом:

{"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)

Однако это импорт долиузлы я ожидаю.Будем весьма благодарны за любые предложения о том, как подойти к этой проблеме!

1 Ответ

1 голос
/ 03 мая 2019

Хорошо, если вы говорите, что не все авторы и книги импортированы, это означает, что два оператора MATCH не находят того, что ищут.

Один из возможных сценариев - идентификаторы хранятся в виде целого числа, но теперь вы пытаетесь сопоставить их как строку.С предоставленной информацией трудно предположить что-либо еще.

Я бы изменил операторы 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...