noe4j之cypher之where

 WHERE 

where 关键字的用法在官方文档中描述为 与match 、optional match 联合使用,作用是添加约束;如果和with联合使用,用来过滤结果。其实意思差不太多,就是对返回结果设置了限定条件。

where中可以加一些布尔运算符 入 and ,or, not ,xor。

大多数情况下where用于节点或关系的属性判断 关于属性值的相关运算种类比较多  比如  n.age>35     name<>"beijing"(不等于)或者关于字符的运算 比如正则的匹配  n.name=~'^[A-D]+.*s$'  (名字以A,B,C,D其中之一开头且以s为结尾的名字)  或者利用 字符串匹配关键字 start with ,end with ,contains ,比如  n.email end with '@qq.com'这就限定了qq邮箱。这些关键字还可以和 NOT联合使用  where   not  n.name contains 'ing' 。这些都是容易想到的功能。还有一些比较容易忽视的使用方式(其实是我容易忽视)见下。


节点属性是否存在-exists()

match (n) where exists(n.color) return n;//返回拥有color属性的节点  节点属性存在还可以用 is not null来代替 match (n) where n.color  is not null return n

路径模式过滤

where不仅能够对属性值做判断处理 还能够用路径模式过滤比如 match (n:city)  where (n)-->(:city{name: "beijing"}) return n;  返回对名字为beijing的city节点有指向关系的节点。

过滤节点标签

match (n) where n:word return n ;//返回标签为word的节点 其实这个有点鸡肋啊   match (n:word) return n;不挺好么。

结束语 在匹配搜索时返回满足一些条件的节点是很容易的,返回不存在某一条件的结果往往难以实现 比如返回A的一些朋友,这些朋友的条件是这些朋友没有朋友(假设朋友这个关系不是相互的)。这时"没有朋友"比较不好描述。这时候需要用到路径模式过滤可以这样写:


match (n:kid{name:"A"})-[:FRIEND]->(m:kid) where not m-[:FRIEND]->() return m;



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值