湖南做旅游网站哪家最好,html5手机网站免费模板,门户网站建设企业,洛阳网站改版neo4j cypher单一语句 optional 可选操作的技巧
参考文章#xff1a; Optional merge on relationships Cyper Merge on Optional Match
背景#xff1a; 使用 match some node 中间还有一些可能与此node有联系的关系或者节点需要处理 create/merge/delete
MATCH (src:SOU…neo4j cypher单一语句 optional 可选操作的技巧
参考文章 Optional merge on relationships Cyper Merge on Optional Match
背景 使用 match some node 中间还有一些可能与此node有联系的关系或者节点需要处理 create/merge/delete
MATCH (src:SOURCE {id:src-001})
// 中间处理关系如果使用MATCH而非OPTIONAL MATCH会导致整个语句不执行。
// 以下就以这个模板说明
DETACH DELETE src 两种方法
假设可能存在 f1-src-t1关系现在要删除src同时可能要创建f1-t1关系
OPTIONAL CASE语句处理成[]数组再遍历数组处理其他逻辑(无限制)
MATCH (src:SOURCE {id:src-001})
// OPTIONAL MATCH影响整体语句DETACH DELETE src
// CASE 后是f1或者t1都可以
// [1] 也可以是[abc]等只要是单元素的列表都可以
WITC src OPTIONAL MATCH (f1:SOURCE)-[:RECORD]-(src)-[:RECORD]-(t1:SOURCE)
WITH src,f1,t1,CASE f1 WHEN NULL THEN [] ELSE [1] END AS mk_list
FOREACH(i IN mk_list | MERGE (f1)-[:RECORD]-(t1))
DETACH DELETE src直接生成数组再遍历数组处理其他逻辑(有限制)
假设可能存在 f1-src-t1关系现在要删除src同时可能要删除t1
MATCH (src:SOURCE {id:src-001})
// [path | node]有点像shell的管道
// 限制就在此方法生成的[]只含有单节点目前不知道怎么存储PATH并在FOREACH使用路径PATH
WITC src, [(f1:SOURCE)-[:RECORD]-(src)-[:RECORD]-(t1:SOURCE) | t1] AS mk_list
FOREACH(t IN mk_list | DETACH DELETE t)
DETACH DELETE src