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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23318779/article/details/66970672

希望能实现类似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

match (a:test1)
with a.id as id
return id
union //union两侧数据名称、格式都得相同,需要两侧零时变量名称相同,或是用with转换名字
match (b:test2)
with b.id as id
return id
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。。。

猜你喜欢

转载自blog.csdn.net/qq_23318779/article/details/66970672
今日推荐