关于在neo4j中使用cypher语句实现NOT IN 的功能

本文介绍了如何在Neo4j中利用none()函数实现NOT IN的效果,通过示例解释了cypher的谓词、标量、聚合和列表函数的用法,包括Exists、none()、id()、properties()、size()、count()、collect()等,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

        我们知道cypher语句中可以使用 IN [1,2,3] 来达到过滤集合数据的功能,那怎么实现NOT IN 呢?

   经过研究cypher函数,我找到了方法。就是使用none()函数函数,这个函数的意思是没有一个元素满足条件。

用这个函数就可以写出NOT IN 效果。例如,排除关系ID不在一个集合里的数据,就可以写出如下语句

match (c:Company)-[r*..2]-(d) where id(c)=0 and id(d) <> 0 
and none(x in r where id(x) in [78,79]) 
return d,r,order by size(r)

语句中的none(x in r where id(x) in [78,79]) 就是排除关系ID是78和79的数据,其他属性字段可以同理操作。

这里来复习下cypher的函数

参考资料:https://www.cnblogs.com/ljhdo/p/10919763.html

一,谓词函数

谓词函数返回true或者false,主要用于检查是否存在或满足特定的条件。

1,Exists

如果指定的模式存在于图中,或者特定的属性存在于节点、关系或Map中,那么函数返回True

例如,节点具有name属性,并check图中是否存在特定的模式:

MATCH (n)
WHERE exists(n.name)
RETURN n.name AS name, exists((n)-[:MARRIED]->()) AS is_married

2,检查集合元素

all()表示所有的元素都满足条件,any()表示至少一个元素满足条件,none()函数表示没有一个元素满足条件,single()表示只有一个元素满足条件

例如,ALL谓词表示,在路径中,所有节点都必须具有age属性&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值