![精通Neo4j](https://wfqqreader-1252317822.image.myqcloud.com/cover/113/47216113/b_47216113.jpg)
上QQ阅读APP看书,第一时间看更新
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所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P139_88936.jpg?sign=1739286557-KabxXrjiTe47qdVe17Qxp3N0EXR3xO8y-0-a81cde3b3bfc9a818272ad07e71a95de)
图3-6 OPTINAL MATCH图例
3.3.2.2 可选关系
如果某个关系是可选的,可使用OPTINAL MATCH。这非常类似SQL中outer join的工作方式。如果关系存在就返回,否则在相应的地方返回null。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P139_102594.jpg?sign=1739286557-nQdz57SAxQZebygy5Rsapuvl06WUcj5p-0-3858de1a1431f4b9caebdc3d4a9c7f9c)
结果返回了null,因为这个节点没有外向关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101574.jpg?sign=1739286557-WxwWBbqIuLf1KE9FFVy84bwlnStF5Vtn-0-27b76e28d635c7c9c93f647f155c3bb8)
3.3.2.3 可选元素的属性
如果可选的元素为null,那么该元素的属性也返回null。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_102596.jpg?sign=1739286557-SSPrmONOiReWthGHuAYfVSzG1J5XX1o1-0-c37df0cb0c104e16a62d795158c80802)
返回了x元素(查询中为null),它的name属性也为null。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101577.jpg?sign=1739286557-tf3WSrDlc6fFnLDwszbUWEz4EXNp0sLE-0-a9586e5e18913255efd3c6fa4c5bae2d)
3.3.2.4 可选关系类型
可在查询中指定可选的关系类型。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_102597.jpg?sign=1739286557-N0nnegZv7KbZkXyxa9qLj60Rax5Gh7a6-0-ebeee9ce5a2080d79e5320f0b8146134)
结果返回了null关系,因为该节点没有ACTS_IN的外向关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101580.jpg?sign=1739286557-CuVq9sAxOiqlPscXDJ6d5F0HDQOxeUgl-0-58b3850630ad5fb30ae8f5ae52924b11)