Neo4j 之 Cypher(二)

**一、**labels()函数,nodes()函数

上篇文章Neo4j 之 Cypher(一)中我们说到了foreach()函数,relationships()函数。本章我们说说labels()函数,nodes()函数。

match p=(n)
where all(l in  nodes(p) where labels(l)=\["ProductEntry"\])
return p

这段代码的意思就是查找处所有标签是ProductEntry的节点。其中nodes§表示该路径的所有节点,lables(l)表示该节点的所有标签,要注意这里返回的是一个数组,因为标签可以是多个。写到这里大家可能会骂我了,说你这么写不是脱了裤子放屁–多此一举嘛,我直接这么写不就行了

match (n:ProductEntry)
return n

确实这么写是可以实现我们的需求。但是我想说的是我这叫被窝里放屁–能(闻)文能(捂)武图片!!!第一种方式我可以通过动态传参数,来实现要查询的节点。在springboot中可以这样传参

@Query("match p=(n)
where all(l in  nodes(p) where labels(l)={labels})
return p")
List<ProductEntryNode> getProductEntry(List<String> labels);

这样就实现了想查什么节点直接传参就行了。第二种方法就不能这么传参,

因为节点的标签是不允许通过参数传递的。

二、关键词with的用法

with 语句将分段的查询部分连接在一起,查询结果从一部分以管道形式传递给另外一部分作为开始点。简单点说就是使用with可以将前边的结果传递后到后续查询之前对结果的操作。常见的用法是限制传递给其他match语句的结果数。举个例子

match(:ProductEntry{name:"iphone12"})-\[r\]-(company)
with company,count(\*) as num
where num>1
return company

这段代码意思查询iphone12大于1的公司。

在下层match中的用法

match(n)-\[\]-(m)
with m
match (m)-\[\]-(o)
return o

今天的语法介绍就到这里了,下篇还会继续介绍Cypher语法

有疑问请点赞哈图片,我会及时回复。由于留言功能微信暂不支持,所以有问题可以直接发消息到公众号

图片

- 本期完 -

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

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值