NEO4J СОЗДАЕТ ОТНОШЕНИЯ О НАГРУЗКЕ CSV - PullRequest
1 голос
/ 19 марта 2019

Я новичок в Neo4j и пытаюсь создать отношения между существующими узлами ... в данном случае Artist & Album.Я загрузил оба без проблем следующим образом:

LOAD CSV WITH HEADERS FROM "file:///chinook/artist.csv" AS line
CREATE (:Artist {artistid: toInteger(line.ArtistId), name: line.Name})

&

LOAD CSV WITH HEADERS FROM "file:///chinook/album.csv" AS line
CREATE (:Album {albumid: toInteger(line.AlbumId), title: line.Title, artistid: toInteger(line.ArtistId)})

Вы можете видеть, что artistid является общим для обоих типов узлов, и это то, что я пытаюсь создать отношенияна.

Я пробовал несколько способов заставить это работать, но это просто не работает, как я ожидаю.Например,

LOAD CSV WITH HEADERS FROM "file:///chinook/artist.csv" AS line
MATCH (al:Album {artistd: line.ArtistId})
MATCH (ar:Artist {artistd: line.ArtistId})
CREATE (ar)-[:RELEASED]->(al)

&

LOAD CSV WITH HEADERS FROM "file:///chinook/artist.csv" AS line
match (ar:Artist), (al:Album) 
where ar.artistid = line.ArtistId and 
      al.artistid = line.ArtistId
MERGE (ar)-[:RELEASED]->(al)

Кто-нибудь может указать мне правильное направление?Любая помощь приветствуется.

1 Ответ

1 голос
/ 19 марта 2019

Проблема с вашим запросом: artistd - целое число в вашей базе данных, и вы сопоставляете его с artistd, равным строка в следующем запросе.

LOAD CSV WITH HEADERS FROM "file:///chinook/artist.csv" AS line
MATCH (al:Album {artistd: line.ArtistId})
MATCH (ar:Artist {artistd: line.ArtistId})
CREATE (ar)-[:RELEASED]->(al)

Вам нужно преобразовать в целое число при сопоставлении, как показано:

LOAD CSV WITH HEADERS FROM "file:///chinook/artist.csv" AS line
MATCH (al:Album {artistd: toInteger(line.ArtistId)})
MATCH (ar:Artist {artistd: toInteger(line.ArtistId)})
MERGE (ar)-[:RELEASED]->(al)

Предложение:

Вам не нужно хранить artistd как свойство узла Album , просто будет работать albumid. В этом случае вам нужно сопоставить Album в поле albumid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...