我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

neo4j可以通过match语句匹配节点和关系,这里衍生了一个子语句叫做optional match,也就是可选的match。如何理解这个可选match呢?这就是本文中主要阐述的内容。

苏南大叔:neo4j图数据库,如何理解optional match语句? - optional-match
neo4j图数据库,如何理解optional match语句?(图8-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。通过本文的学习,您可以了解optional match和更加常见的match语句的区别。测试环境:win10neo4j社区版@4.4.6java@11.0.14。本文使用的例子,还是neo4j自带的movie例子。

基本数据情况

这里先回顾一下match语句,参考文章:

这里先直观的观察一下目标数据:

match (m)-[r:FOLLOWS]->(n) return m,r,n

苏南大叔:neo4j图数据库,如何理解optional match语句? - 已有数据
neo4j图数据库,如何理解optional match语句?(图8-2)

这里有三条关注数据,然后再进行一次match,引出本文的主角。

match (m{name:'James Thompson'}) return m

苏南大叔:neo4j图数据库,如何理解optional match语句? - 已有关注数据
neo4j图数据库,如何理解optional match语句?(图8-3)

关注了谁[match]

先看看James Thompson都关注了谁:

match (m{name:'James Thompson'})-[r:FOLLOWS]->(n) return m,r,n
match (m{name:'James Thompson'}) match (m)-[r:FOLLOWS]->(n) return m,r,n

苏南大叔:neo4j图数据库,如何理解optional match语句? - 数据查询1
neo4j图数据库,如何理解optional match语句?(图8-4)

match (m{name:'James Thompson'}) optional match (m)-[r:FOLLOWS]->(n) return m,r,n
optional match (m{name:'James Thompson'})-[r:FOLLOWS]->(n) return m,r,n

苏南大叔:neo4j图数据库,如何理解optional match语句? - 数据查询2
neo4j图数据库,如何理解optional match语句?(图8-5)

这里可以看到:是否使用optional对于既有数据符合查询的情况,没有什么区别。

被谁关注了[optional match]

再看看James Thompson被谁关注了:

match (m{name:'James Thompson'})<-[r:FOLLOWS]-(n) return m,r,n
match (m{name:'James Thompson'}) match (m)<-[r:FOLLOWS]-(n) return m,r,n

苏南大叔:neo4j图数据库,如何理解optional match语句? - 没有查找到数据
neo4j图数据库,如何理解optional match语句?(图8-6)

下面的两条optional match返回的结果不同:

match (m{name:'James Thompson'}) optional match (m)<-[r:FOLLOWS]-(n) return m,r,n

苏南大叔:neo4j图数据库,如何理解optional match语句? - optional-match-null
neo4j图数据库,如何理解optional match语句?(图8-7)

optional match (m{name:'James Thompson'})<-[r:FOLLOWS]-(n) return m,r,n

苏南大叔:neo4j图数据库,如何理解optional match语句? - optional-match-null-2
neo4j图数据库,如何理解optional match语句?(图8-8)

对于不存在的数据,加optional会强制返回null数据,不加的话,就什么数据都没有。

相关链接

综述

更多neo4j语句的相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   neo4j    cypher