neo4j
操作符类型 | 操作符 |
---|---|
聚集操作 | DISTINCT |
成员变量操作 | . :用于访问静态成员变量 [] :用于访问动态成员变量 = :用于整体成员变量修改,未指定的成员变量会被清空为null += :用于改变指定的成员变量 |
数学运算符 | +,-,*,/,%,^ |
比较运算符 | =,<>,<,>,<=,>=,IS NULL,NOT,NULL |
字符串匹配符 | STARTS WITH,ENDS WITH,CONTAINS |
布尔运算 | AND,OR,XOR,NOT |
字符串运算 | + :关联字符串 =~ :正则匹配 |
时间运算 | +和- :用于时间之间加减 *和/ :用于时间和数量之间 |
键值对操作 | . :用于访问值 [] :用于访问动态值 |
列表操作 | + :关联 IN :查找列表中是否存在该元素 [] :动态地访问元 |
说明:
跟SQL语句基本一致
示例
动态访问
CREATE
(a:Restaurant {name: 'Hungry Jo', rating_hygiene: 10, rating_food: 7}),
(b:Restaurant {name: 'Buttercup Tea Rooms', rating_hygiene: 5, rating_food: 6}),
(c1:Category {name: 'hygiene'}),
(c2:Category {name: 'food'})
WITH a, b, c1, c2
MATCH (restaurant:Restaurant), (category:Category)
WHERE restaurant["rating_" + category.name] > 6
RETURN DISTINCT restaurant.name
聚合
CREATE
(a:Person {name: 'Anne', eyeColor: 'blue'}),
(b:Person {name: 'Bill', eyeColor: 'brown'}),
(c:Person {name: 'Carol', eyeColor: 'blue'})
WITH [a, b, c] AS ps
UNWIND ps AS p
RETURN DISTINCT p.eyeColor
仅返回blue和brown
整体成员变量修改
CREATE (a:Person {name: 'Jane', age: 20})
WITH a
MATCH (p:Person {name: 'Jane'})
SET p = {name: 'Ellen', livesIn: 'London'}
RETURN p.name, p.age, p.livesIn
age会变为null
修改指定的成员变量
CREATE (a:Person {name: 'Jane', age: 20})
WITH a
MATCH (p:Person {name: 'Jane'})
SET p += {name: 'Ellen', livesIn: 'London'}
RETURN p.name, p.age, p.livesIn
比较运算
- 和null进行比较,结果只会是null;
- 不同类型数据比较会得到false;
- 比较两侧中可以是带计算的表达式;
- 时间点比较需要考虑时区;
- 时间段无法比较,比较结果只会是null;
- 可以在一行中连续比较,完全正确则返回true
RETURN 1 = 1 - 0 < 2 < 3
result is true
布尔比较
a | b | a AND b | a OR b | a XOR b | NOT a |
---|---|---|---|---|---|
false | false | false | false | false | true |
false | null | false | null | null | true |
false | true | false | true | true | true |
true | false | false | true | true | false |
true | null | null | true | null | false |
true | true | true | true | false | false |
null | false | false | null | null | null |
null | null | null | null | null | null |
null | true | null | true | null | null |