Neo4j 之 Cypher(一)

一般的增删改查操作,我们就不谈了。基本的操作网上都能查到,这篇文章就把我们经常会用到的写下来,供大家参考。话不多说直接开干。

– 删除关系 –

1、 (a)-[r]->(b) 要删除关系r,那我们直接这样写

match (a:ProductEntry)-\[r\]->(b:ProductEntry)
where id(a)='' and id(b)=''
delete r

2、(a)-[r]->b-[r]->© 要删除a,b,c之间的r关系,这个怎么写呢?你可能会这么写

match (a:ProductEntry)-\[r\*1..\]->(b:ProductEntry)
where id(a)='' and id(b)=''
delete r

我们可能想当然了,这样写其实会报错的。他会告诉你r是一个List不允许这么干。这个时候我们就用到了Cypher的一个foreach()函数,我们可以这么写

match p=(a:ProductEntry)-\[r\*1..\]->(b:ProductEntry)
where id(a)='' and id(b)=''
foreach(n in relationships(p)|delete n)

这里foreach意思就是循环查询出关系类型,然后删除。

语法:foreach(variable IN list | expression)

  • list:返回列表中的表达式

  • variable:引用list中元素的变量,他在expression中会用到

  • expression:针对列表中每个元素所运行的表达式,并产生一个结果列表

relationships()也是其中一个函数,表示返回一条路径中的所有关系,同理我们如果想获取路径中的所有节点这可以用nodes()函数。

*1…是描述关系长度大于等于1的路径,类似的还有

(a)-\[\*3..5\]->(b)
关系的长度最小值为3,最大值为5。他描述了一个或者有4个节点和3个节点关系,
或者5个节点4个关系,或者6个节点和5个关系连在一起的图组成的一条路径。
(a)-\[\*3..\]->(b)
一个路径长度大于等于3的路径
(a)-\[\*..5\]->(b)
一个路径长度小于等于5的路径
(a)-\[\*\]->(b)
任意长度的路径

我们的关系类型也可以写多个用“|”隔开,比如

(a)-[:KNOW_S|TYPE2*1..2]->(b)

– 删除节点 –

1、删除节点(a)-[r]->(b)中的a节点,我们直接这么写

match (a)-\[r\]->(b)
delete a

这样也会报错的,因为(a)节点存在关系®连接着,如果要删除节点,要先删除关系®,当然我们也可以这么写,他会把关联(a)以及他的关系都删掉

match (a)-\[r\]->(b)
detach delete a

– 断言函数 –

Cypher的断言函数:


  • all():判断是否一个断言适用于列表中的所有元素

  • any():判断是否一个断言至少适用于列表中的一个元素

  • none():如果断言不适用于列表中的任何元素,则返回true

  • single():如果断言刚好只适用于列表中的某一个元素,则返回true

  • exists():如果数据库中存在该模式或者节点中存在该属性时,则返回true

这里我们只讲一个all()函数,其他的语法都类似。

(a)-[r]-(b),查询长度为1到3中所有节点都有一个大于30的age属性,那我们查询语句是这样的

match p=(a)-\[r\*1..3\]->(b)
where a.name='' and b.name='' 
and all(x in nodes(p) where x.age>30)
return p

语法:all(variable IN list where predicate)

  • list:返回列表的表达式

  • variable:用于断言中的变量

  • predicate:用于测试列表中所有元素的断言

今天语法就讲到这里了,后续我们还会接着讲。

有疑问请点赞和留言哈图片,我会及时回复。

- 本期完 -

为方便看最新内容,记得关注哦!

图片

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值