Cypher - MERGE

 可以确保图数据库中存在某个特定的模式。如果该模式不存在,那就创建它。
 可以指定让某个数据存在,不管是匹配到还是创建
 在整个模式上使用,要么整个匹配,要么整个创建,不能部分匹配

//匹配某个节点,如果不存在就创建,存在就返回

merge (u:User{id:8,name:'吴用'})
return u

//根据条件来匹配  , 如果 u.id 重复出现,也只会创建一次
match (u:User)
merge (a:Auth{userId:u.id})
return a

// 检查节点是否存在,如果不存在则创建它并设置属性

merge (u:User{id:9,name:'林冲'})
on create set u.createTime = timestamp()
return u

// 匹配节点,并在找到的节点上设置属性

merge (u:User{id:3})
on match set u.name='武松' 
return u

// create 与 match 同时使用

merge (u:User{id:4})
on create set u.name = '晃盖' , u.createTime = timestamp()
on match set u.name = '史进' , u.updateTime = timestamp()
return u

//匹配或创建关系。 注意必须至少指定 个绑定的节点

match (u1:User),(u2:User)
where u1.id = 6 and u2.id = 9
merge (u1)-[:DIRECT]->(u2)
return u1,u2

//如果 (o) 不存在,就创建节点。并创建它们的关系

match (u1:User),(u2:User)
where u1.id = 1 and u2.id = 11
merge (u1)-[:DIRECT]->(o)->(u2)
return u1,u2

//合并已存在两节点之前的关系

match (u:User{id:1})
merge (a:Auth{userId:u.id})
merge (u)-[:UA]->(a)

return u,a

//合并一个已存在节点和一个合并的节点之间的关系

match (u:User{id:1})
merge (u)-[:UA]->(a:Auth{userId:u.id})
return u,a

merge 的唯一性约束
 -- 当使用的模式涉及唯一性约束时,cypher 可以通过 merge 来防止获取相冲突的结果

1. 唯一性约束与部分匹配      -- merge 将合并失败

2. 唯一性约束与匹配冲突      --merge 将合并失败

 

 

 

 

 

转载于:https://my.oschina.net/u/2552286/blog/3070328

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值