neo4j找到一个节点来创建一个关系

时间:2017-02-13 13:38:58

标签: neo4j cypher

neo4j是neo4j社区版,版本3.1.1

我为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"})

现在很重要,我希望通过它的坐标找到l并创建关系,我试过

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

并收到错误:

  MERGE和MATCH之间需要

WITH(行...)

(我不能保留上面的l3标识符,这些行是由解析不同文件的脚本生成的)

什么是正确的语法?

搜索手册页:neo4j.com/docs/developer-manual/current/cypher/clauses/merge/(3.3.8.4。合并关系)

1 个答案:

答案 0 :(得分:3)

烨,

你不能在MERGE之后创建一个MATCH,所以你必须在这之间添加一个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)