![精通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=1739666443-a9QP24pO6lwCddyvzOshvBqaRHMCLxj9-0-c96dd78bcc49f0bde5985e71166db444)
图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=1739666443-Q4PFFLRPe0SegPWRMV9HP67l8gZYl88h-0-7fb66f43931e66672261ed3f7a14f101)
结果返回了null,因为这个节点没有外向关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101574.jpg?sign=1739666443-FKscoeTYh6Zqp8T0lOAwjALnUgNQAV3c-0-670a60d0e7a3624e00a8991d85579323)
3.3.2.3 可选元素的属性
如果可选的元素为null,那么该元素的属性也返回null。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_102596.jpg?sign=1739666443-qJ1DOIielWsTfEkNbDTC6HkKCcdLXMQ6-0-e8b170d06b4c539ef0fd3b40919b75a8)
返回了x元素(查询中为null),它的name属性也为null。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101577.jpg?sign=1739666443-jofGWCMbpqM4LON7Qt432tzMXsmN1BuN-0-f20ccfccfa0dd9acd1d1716369e2d616)
3.3.2.4 可选关系类型
可在查询中指定可选的关系类型。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_102597.jpg?sign=1739666443-MbqL283S7xlvQ8RhBwOAbtc9d1b5dT06-0-7ddca4a8e880aa7d774c6691eb1ea4b1)
结果返回了null关系,因为该节点没有ACTS_IN的外向关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101580.jpg?sign=1739666443-XmOh7uB7Jt12SYixnnC0mrhRr4HX8iFw-0-8dfa006cf9dffb300e86336d2f69c93c)