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。合并关系)
答案 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)