neo4j cypher基于节点label、关系type的与或查询

时间:2021-10-22 18:03:17

希望能实现类似match (a:test1 & :test2),match (a:test1 | :test2)的效果


1、节点的label的与查询

MATCH (a:test1:test2) return a limit 25
很直接,没有什么符号连接

2、节点的label的或查询

按说应该有match (a:test1 | :test2)这样的语法能够实现需求,但是其实并不支持这么写,可能和neo4j内部存储结构、内存cache的设计有关,正在探究中。。

方法一:union

PS1:union要求两侧数据名称、类型相同,所以需要用with修改临时变量名称,或者在定义临时变量名称时,就使名称相同 PS2:union是会合并相同数据的集合,union all是不合并相同数据的集合
3、关系的type的与查询
每条关系只能有一个type,不存在与查询

4、关系的type的或查询

方法一:“|”或运算符

MATCH (a:test{id:1})-[r:test|:test2]-(b:test{id:2}) return r limit 25
关系type的或查询,可以直接“:test1|:test2”这样写,

方法二:union

同2。。。