本文共 1895 字,大约阅读时间需要 6 分钟。
Cypher 提供了强大的布尔逻辑操作,可以通过 AND、OR、XOR 和 NOT 进行复杂的条件判断。
示例:
MATCH (n)WHERE n.name = 'Peter' XOR (n.age < 30 AND n.name = 'Timothy') OR NOT (n.name = 'Timothy' OR n.name = 'Peter')RETURN n.name, n.age
可以通过节点标签过滤符合特定标签的节点。
示例:
MATCH (n)WHERE n:SwedishRETURN n.name, n.age
通过节点属性过滤可以快速筛选出符合特定条件的节点。
示例:
MATCH (n)WHERE n.age < 30RETURN n.name, n.age
可以通过关系属性过滤来获取满足特定关系条件的节点。
示例:
MATCH (n)-[k:KNOWS]->(f)WHERE k.since < 2000RETURN f.name, f.age, f.email
通过动态节点属性过滤,可以灵活地根据属性名进行过滤。
示例:
WITH 'AGE' AS propnameMATCH (n)WHERE n[toLower(propname)] < 30RETURN 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 'y'RETURN n.name, n.age
通过正则表达式可以对字符串属性进行更复杂的匹配。
示例:
MATCH (n)WHERE n.email =~ '.*\\.com'RETURN n.name, n.age, n.email
示例:
MATCH (n)WHERE n.name =~ '(?i)AND.*'RETURN n.name, n.age
示例:
MATCH (timothy { name: 'Timothy' }),(others)WHERE others.name IN ['Andy', 'Peter'] AND (timothy)-->(others)RETURN others.name, others.age 示例:
MATCH (persons),(peter { name: 'Peter' })WHERE NOT (persons)-->(peter)RETURN persons.name, persons.age 示例:
MATCH (n)WHERE (n)-[:KNOWS]-({ name: 'Timothy' })RETURN n.name, n.age 示例:
MATCH (n)-[r]->()WHERE n.name='Andy' AND type(r)=~ 'K.*'RETURN type(r), r.since
示例:
MATCH (a)WHERE a.name IN ['Peter', 'Timothy']RETURN a.name, a.age
示例:
MATCH (n)WHERE exists(n.belt)RETURN n.name, n.belt
示例:
MATCH (a)WHERE a.name >= 'Peter'RETURN a.name, a.age
示例:
MATCH (a)WHERE a.name > 'Andy' AND a.name < 'Timothy'RETURN a.name, a.age
转载地址:http://fgefk.baihongyu.com/