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
    评论
Cypher是一种声明式图数据库查询语言,类似于关系数据库中的SQL。它设计借鉴了其他语言的惯用做法,如SQL和Python。Cypher的基本语法包括MATCH(匹配图模式)、WHERE(过滤条件)和RETURN(定义返回结果)。可以使用CREATE(增)、DELETE(删)、SET(改)和MATCH(查)等关键字来操作节点和关系。例如,可以使用create命令创建一个名为"猪爷爷"的节点,代码如下:create(:pig{name:"猪爷爷", age:15}); Neo4j是一款强健、可伸缩、高性能的图数据库。它完整支持ACID事务,具有高可用性,并可以轻松扩展到上亿级别的节点和关系。使用Neo4j可以进行高效的图数据库查询和更新操作。可以通过Cypher语言来表达这些查询和更新操作,以实现对图数据库的操作和管理。 Neo4j适用于各种规模的企业部署,也可以用于轻量级项目中的完整服务器的一个子集。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [neo4j基本知识及Cypher语言](https://blog.csdn.net/weixin_43178406/article/details/103906826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [三、Neo4j查询语言Cypher相关命令介绍](https://blog.csdn.net/gdkyxy2013/article/details/109489063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Neo4j Cypher](https://download.csdn.net/download/qq_25424257/10370504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值