2017-02-13 1 views
2

Neo4j является Neo4j Community Edition, версия 3.1.1Neo4j нахождение узла создать связь

создать узел для LUN

merge (l3:lun {nom:"OS_SU1_", serie:"123456", coordonnees:"00:00:00"}) 
set l3.taille = 102400 

последний, я хочу подключить хост к этому LUN, создание хоста легко

merge (hSUP_1:host {nom:"SUP_1"}) 

теперь большая проблема, я хочу, чтобы найти л на ее координаты и создать отношения, я попытался

match (l:lun {coordonnees : "00:00:00"}) merge (hSUP_1) -[:connecte_a]-> (l) 

и получить ошибку:

WITH is required between MERGE and MATCH (line ...)

(я не могу держать l3 идентификатор выше, эти строки генерируются с помощью сценария, разобрать другой файл)

что правильный синтаксис?

человек страница Поиск: neo4j.com/docs/developer-manual/current/cypher/clauses/merge/

ответ

2

Yop,

Вы не можете сделать (3.3.8.4 Merge отношения.) MATCH после MERGE, так что вы должны добавить WITH между так:

MERGE (hSUP_1:host {nom:"SUP_1"}) 
MATCH (l:lun {coordonnees : "00:00:00"}) 
WITH l, hSUP 
    MERGE (hSUP_1) -[:connecte_a]-> (l) 

в противном случае, вы можете также изменить порядок, как это:

MATCH (l:lun {coordonnees : "00:00:00"}) 
MERGE (hSUP_1:host {nom:"SUP_1"}) 
MERGE (hSUP_1) -[:connecte_a]-> (l) 
+0

Вторая работа решения, однако я не могу вставить несколько хостов. Я использую браузер (localhost: 7474). – Archemar

+0

Я не понимаю, «вставляя несколько хостов» ... Что вы подразумеваете под этим? – logisima

+0

с использованием опции браузера, похоже, что «statement1; statement2» не удастся. пропускание точки с запятой приведет к неправильному смешиванию MERGE и MATCH. (Я выясняю, как запустить cypher-shell, не стоит задавать новый нечеткий вопрос) – Archemar

Смежные вопросы