Neo4j: Как создать новый узел с двумя новыми отношениями? - PullRequest
0 голосов
/ 19 марта 2020

Как создать новый узел с двумя новыми исходящими ребрами? Я знаю, как создать один, но я не могу понять, как создать второй край. Конечно, я мог бы сделать это в отдельном операторе MATCH, но кажется, что было бы чище просто создать оба сразу:

LOAD CSV FROM ... as ROW
MATCH (father: Father), (mother: Mother)
WHERE father.id=ROW.father_id, mother.id=ROW.mother_id
CREATE (child: Child{ ... }) ->[:IS_CHILD_OF]->(father)
// what about the IS_CHILD_OF -> mother?

Ответы [ 2 ]

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

В этих случаях вы должны быть осторожны с CREATE, потому что при повторном выполнении запроса вы можете получить дубликаты, например, [:IS_CHILD_OF] ребер. Кроме того, когда вы MERGE шаблон, он будет создавать весь шаблон, если его часть не существует, например, когда отца нет в магазине.

По этим причинам лучше использовать подход, подобный приведенному ниже, в котором я также предлагаю использовать ярлык :Person. Возможно, вы захотите добавить свойство gender на этих узлах.

LOAD CSV FROM ... as ROW
MERGE (child:Person{id:ROW.child_id}) 
MERGE (father:Person {id:ROW.father_id})<-[:IS_CHILD_OF]-(child)
MERGE (mother:Person {id:ROW.mother_id})<-[:IS_CHILD_OF]-(child)

0 голосов
/ 19 марта 2020

просто

CREATE (mother)<-[:IS_CHILD_OF]-(child: Child{ ... })-[:IS_CHILD_OF]->(father)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...