neo4j查找节点以创建关系

neo4j查找节点以创建关系,neo4j,cypher,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

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)
并获取一个错误:

合并和匹配之间需要使用(行…)

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

什么是正确的语法

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

Yop

合并后无法进行匹配,因此必须添加一个中间值,如下所示:

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)
否则,您也可以按如下方式更改顺序:

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)

第二个解决方案可行,但我不能插入多个主机。我正在使用浏览器(localhost:7474)。我不理解“插入多个主机”。。。这是什么意思?使用浏览器选项,似乎“statement1;statement2”将失败。跳过分号将导致合并和匹配以错误的方式混合。(我知道如何运行cypher shell,不值得再问一个模糊的问题)在浏览器中只能执行一条语句。要批量处理某些语句,应该使用
cypher shell
(如您所说)