**一、**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语法
有疑问请点赞哈,我会及时回复。由于留言功能微信暂不支持,所以有问题可以直接发消息到公众号
- 本期完 -
为方便看最新内容,记得关注哦!