where语句无法单独使用,而是和match、optional match、start、with一起使用
或者做为with和start的结果过滤器
基础使用
操作符
MATCH (n)
WHERE n.name = 'Peter' XOR (n.age < 30 AND n.name = 'Tobias') OR NOT (n.name = 'Tobias' OR n.name = 'Peter')
RETURN n.name, n.age
过滤节点标签
MATCH (n)
WHERE n:Swedish
RETURN n.name, n.age
过滤节点属性
MATCH (n)
WHERE n.age < 30
RETURN n.name, n.age
过滤关系属性
MATCH (n)-[k:KNOWS]->(f)
WHERE k.since < 2000
RETURN f.name, f.age, f.email
过滤动态的节点属性
WITH 'AGE' AS propname
MATCH (n)
WHERE n[toLower(propname)]< 30
RETURN n.name, n.age
监测属性是否存在
MATCH (n)
WHERE exists(n.belt)
RETURN n.name, n.belt
字符串匹配
开头
MATCH (n)
WHERE n.name STARTS WITH 'Pet'
RETURN n.name, n.age
结尾
MATCH (n)
WHERE n.name ENDS WITH 'ter'
RETURN n.name, n.age
任意位置
MATCH (n)
WHERE n.name CONTAINS 'ete'
RETURN n.name, n.age
不匹配
MATCH (n)
WHERE NOT n.name ENDS WITH 's'
RETURN n.name, n.age
正则表达式
MATCH (n)
WHERE n.name =~ 'Tob.*'
RETURN n.name, n.age
正则表达式(转义)
MATCH (n)
WHERE n.email =~ '.*\\.com'
RETURN n.name, n.age, n.email
正则表达式(不区分大小写)
MATCH (n)
WHERE n.name =~ '(?i)ANDR.*'
RETURN n.name, n.age
列表
MATCH (a)
WHERE a.name IN ['Peter', 'Tobias']
RETURN a.name, a.age
范围查询
MATCH (a)
WHERE a.name >= 'Peter'
RETURN a.name, a.age
MATCH (a)
WHERE a.name > 'Andres' AND a.name < 'Tobias'
RETURN a.name, a.age