neo4j图数据库,如何理解optional match语句?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
neo4j
可以通过match
语句匹配节点和关系,这里衍生了一个子语句叫做optional match
,也就是可选的match
。如何理解这个可选match
呢?这就是本文中主要阐述的内容。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。通过本文的学习,您可以了解optional match
和更加常见的match
语句的区别。测试环境:win10
,neo4j社区版@4.4.6
,java@11.0.14
。本文使用的例子,还是neo4j
自带的movie
例子。
基本数据情况
这里先回顾一下match
语句,参考文章:
这里先直观的观察一下目标数据:
match (m)-[r:FOLLOWS]->(n) return m,r,n
这里有三条关注数据,然后再进行一次match
,引出本文的主角。
match (m{name:'James Thompson'}) return m
关注了谁[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
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
这里可以看到:是否使用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
下面的两条optional match
返回的结果不同:
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
对于不存在的数据,加optional
会强制返回null
数据,不加的话,就什么数据都没有。
相关链接
- https://neo4j.com/docs/cypher-manual/current/clauses/optional-match/
- https://newsn.net/say/neo4j-match-node.html
- https://newsn.net/say/neo4j-match-relationship.html
综述
更多neo4j
语句的相关经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。