我想編寫一個測試存在路徑的單個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很容易... –