3.3.2 OPTIONAL MATCH语句
OPTIONAL MATCH语句用于搜索模式中描述的匹配项,对找不到的项用null代替。
3.3.2.1 简介
OPTINAL MATCH匹配模式与MATCH类似。不同之处在于,如果没有匹配到,OPTINAL MATCH将用null作为未匹配到部分的值。OPTINAL MATCH在Cypher中类似于SQL语句中的outer join。
记住,WHERE是模式描述的一部分,匹配的时候就会考虑到WHERE语句中的断言,而不是匹配之后才考虑。这对于有多个OPTINAL MATCH语句的查询尤其重要,一定要将属于MATCH的WHERE语句与MATCH放在一起。
OPTINAL MATCH图例如图3-6所示。

图3-6 OPTINAL MATCH图例
3.3.2.2 可选关系
如果某个关系是可选的,可使用OPTINAL MATCH。这非常类似SQL中outer join的工作方式。如果关系存在就返回,否则在相应的地方返回null。
查询:

结果返回了null,因为这个节点没有外向关系。
结果:

3.3.2.3 可选元素的属性
如果可选的元素为null,那么该元素的属性也返回null。
查询:

返回了x元素(查询中为null),它的name属性也为null。
结果:

3.3.2.4 可选关系类型
可在查询中指定可选的关系类型。
查询:

结果返回了null关系,因为该节点没有ACTS_IN的外向关系。
结果:
