操作符类型操作符
聚集操作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

布尔比较

aba AND ba OR ba XOR bNOT a
falsefalsefalsefalsefalsetrue
falsenullfalsenullnulltrue
falsetruefalsetruetruetrue
truefalsefalsetruetruefalse
truenullnulltruenullfalse
truetruetruetruefalsefalse
nullfalsefalsenullnullnull
nullnullnullnullnullnull
nulltruenulltruenullnull

参考及示例来源 https://www.cnblogs.com/MarisaMagic/p/17537963.html