我想编写一个测试存在路径的单个Cypher语句,如果该部分不存在,则添加它。Cypher - 如果节点不存在,则进行原子插入
考虑路径(:A)-[:REL]->(:B{id:123})
,那么路径的存在可以通过
OPTIONAL MATCH p = (:A)-[:REL]->(:B{id:123}) RETURN CASE COUNT(p) WHEN 0 THEN false ELSE true END
哪个返回false测试,如果路径不存在,或真如果这样做。
的路径可以通过
CREATE (b:B{id:123}), (b)<-[:REL]-(:A)
然而创建,如果这些语句被组合,这样,如果该路径丢失然后它被创建,Cypher支架生成语法错误
OPTIONAL MATCH p = (:A)-[:REL]->(:B{id:123}) RETURN CASE COUNT(p) WHEN 0 THEN CREATE (b:B{id:123}), (b)<-[:REL]-(:A) END
有没有正确的方法来执行此路径的原子创建?
谢谢 - 阅读说明书! [merge](http://neo4j.com/docs/stable/query-merge.html) – Geoff
一旦有人知道要搜索的魔语,RTM很容易... –