Создать не делает все узлы и отношения появляются - PullRequest
0 голосов
/ 12 апреля 2020

Я только что скачал и установил Neo4J. Сейчас я работаю с простым CSV, который выглядит так:

enter image description here

Итак, сначала я использую это для объединения узлов для этого файла :

LOAD CSV WITH HEADERS FROM 'file:///Athletes.csv' AS line
MERGE(Rank:rank{rang: line.Rank})
MERGE(Name:name{nom: line.Name})
MERGE(Sport:sport{sport: line.Sport})
MERGE(Nation:nation{pays: line.Nation})
MERGE(Gender: gender{genre: line.Gender})
MERGE(BirthDate:birthDate{dateDeNaissance: line.BirthDate})
MERGE(BirthPlace: birthplace{lieuDeNaissance: line.BirthPlace})
MERGE(Height: height{taille: line.Height})
MERGE(Pay: pay{salaire: line.Pay})

и это, чтобы создать некоторое ограничение для этого файла:

CREATE CONSTRAINT ON(name:Name) ASSERT name.nom IS UNIQUE
CREATE CONSTRAINT ON(rank:Rank) ASSERT rank.rang IS UNIQUE

Затем я хочу показать, в какой стране живут спортсмены. Для этого я использую:

Create(name)-[:WORK_AT]->(nation)

Но у меня есть это:

enter image description here

Я хотел бы знать, почему у меня есть это пожалуйста.

Заранее благодарю всех, кто находит время, чтобы помочь мне.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Да, согласен с @cybersam, это чувствительный к регистру вопрос переменных name и нации. Мое предложение:

MERGE (Name)-[:WORK_AT]->(Nation)

Я вижу, что вы используете MERGE для узлов, поэтому на случай дублирования значений Name или Nation вам следует использовать MERGE вместо CREATE.

1 голос
/ 13 апреля 2020

На ум приходит несколько вопросов:

  1. Если ваше предложение CREATE является частью вашего первого запроса : так как предложение CREATE использует имена переменных name и nation, а в ваших предложениях MERGE используются Name и Nation (которые имеют разные регистры) - предложение CREATE будет просто создавать новые узлы вместо использования Name и Nation node.

  2. Если ваше предложение CREATE НЕ является частью вашего первого запроса : ваше предложение CREATE просто создаст новые узлы (так как имена переменных, даже если предположить, что они имеют одинаковый регистр, являются локальными для запроса и не хранятся в БД).

Решение: Вы можете добавить это предложение в конец первого запроса:

    CREATE (Name)-[:WORK_AT]->(Nation)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...