neo4j--Cypher 基本语法

本文详细介绍了Neo4j的Cypher查询语言,包括类型、表达式、参数、运算符、模式、列表、空值处理以及节点和关系的语法。Cypher支持数值、字符串、布尔值等多种类型,并提供了丰富的表达式和运算符,如数学、比较和布尔运算。模式用于匹配和操作图数据,而参数使得查询更加灵活和安全。案例表达式则提供了条件判断的灵活性。
摘要由CSDN通过智能技术生成

一、类型

Cypher处理的所有值都有一个特定的类型,它支持如下类型:

  1. 数值型
  2. 字符串
  3. 布尔型
  4. 节点
  5. 关系
  6. 路径
  7. 映射(Map)
  8. 列表(List)

二、表达式

Cypher中的表达式如下:

  1. 十进制(整型和双精度型)的字面值:13, -4000, 3.14, 6.022E23
  2. 十六进制整型字面值(以0x开头):0x13zf, 0xFC3A9, -0x66eff
  3. 八进制整型字面值(以0开头):01372, 02127, -05671
  4. 字符串字面值:'Hello', "World"
  5. 布尔字面值:true, false, TRUE, FALSE
  6. 变量:n, x, rel, myFancyVariable, `A name with weird stuff in it[]!`
  7. 属性:n.prop, x.prop, rel.thisProperty, myFancyVariable. `(weird property name)`
  8. 动态属性:n["prop"], rel[n.city + n.zip], map[coll[0]]
  9. 参数:$param, $0
  10. 表达式列表:['a', 'b'], [1, 2, 3], ['a', 2, n.property, $param], [ ]
  11. 函数调用:length(p), nodes(p)
  12. 聚合函数:avg(x.prop), count(*)
  13. 路径-模式:(a)-->()<--(b)
  14. 计算式:1 + 2 >3 and 3 < 4.
  15. 返回true或者false的断言表达式:a.prop = 'Hello', length(p) >10, exists(a.name)
  16. 正则表达式:a.name =~ 'Tob.*'
  17. 大小写敏感的字符串匹配表达式:a.surname STARTS WITH 'Sven', a.surname ENDS WITH 'son' or a.surname CONTAINS 'son'
  18. CASE表达式

三、参数

Cypher支持带参数的查询。这意味着开发人员不是必须用字符串来构建查询。此外,这也让执行计划的缓存更容易。

参数能够用于WHERE语句中的字面值和表达式,START语句中的索引值,索引查询以及节点和关系的id。参数不能用于属性名、关系类型和标签,因为这些模式(pattern)将作为查询结构的一部分被编译进查询计划。

合法的参数名是字母,数字以及两者的组合。下面是一个使用参数的完整例子。参数以JSON格式提供。具体如何提交它们取决于所使用驱动程序。

{

"name" : "Johan"

}

Match (n) where n.name=$name return n

四、运算符

1、数学运算符

   包括+,-,*,/ 和%,^。

2、比较运算符

   包括=,<>,<,>,<=,>=,IS NULL和IS NOT NULL。

3、布尔运算符

   包括AND,OR,XOR和NOT。

4、字符串运算符

    连接字符串的运算符为+。正则表达式的匹配运算符为=~。

5、列表运算符

    列表的连接也可以通过+运算符。可以用IN来检查列表中是否存在某个元素。

6、值的相等与比较

   Cypher支持使用=和<>来比较两个值的相等/不相等关系。同类型的值只有它们是同一个值的时候才相等,如3 = 3和"x" <> "xy"。

7、值的排序与比较

     比较运算符<=,<(升序)和>=,>(降序)可以用于值排序的比较。如下所示:

  • 数字型值的排序比较采用数字顺序
  • java.lang.Double.NaN大于所有值
  • 字符串排序的比较采用字典顺序。如"x" < "xy"
  • 布尔值的排序遵循false < true
  • 当有个参数为null的时候,比较结果为null。如null < 3的结果为null
  • 将其他类型的值相互比较进行排序将报错

8、链式比较运算

       比较运算可以被任意地链在一起。如x < y <= z等价于x < y AND y <= z。如:

MATCH (n) WHERE 21 < n.age <= 30 RETURN n

等价于

MATCH (n) WHERE 21 < n.age AND n.age <= 30 RETURN n

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值