2016-06-14 5 views
0

У меня есть небольшая проблема с neo4j, и я не знаю, как ее разрешить.Neo4J как добавить связь между двумя узлами, которые уже существуют

Я использую синтаксис: create(p1)-[:wow]->(p2) и она отлично работает, это на самом деле сделать отношения между узлом p1 и узлом p2, но что, если я хочу сделать relatioship между первым и третьим?

Когда я пытаюсь с create(p1)-[:wow]->(p3), он создает что-то вроде еще 4 узлов, которые я не хочу. Что я могу сделать?

Example

, например, в этом изображении, как я может сделать отношения корабль между узлом 1 и 3 без делать любые другие узлы?

Спасибо

ответ

1

Вы должны сначала соответствовать вашим узлы затем создать связь между ними:

Вы созданный узлы:

CREATE (a:Foo{name:"foo"}), (b:Bar{name:"bar"}) 

Затем вы хотите создать связь между ними:

MATCH (f:Foo{name:"foo"}), (h:Bar{name:"bar"}) 
with f,h 
CREATE (f)-[:LOVES]->(h) 

Если вы не согласны с узлами раньше, Neo4j создаст эти узлы для вы.

+0

Почему в 'MATCH (f: Foo {name: "foo"}), (h: Bar {name: "bar}) с f, h' вы используете f и h для создания a и b, которые вы создали? – ziopera

+0

Чтобы показать вам, что это только имена переменных, а не идентификаторы или созданные вами узлы. – Supamiu

+0

ОК, это работает :) Огромное спасибо! – ziopera