neo4j查询多深度关系节点


一、使用深度运算符

当要实现多深度关系节点查询时,可变数量的关系可以使用-[:TYPE*minHops..maxHops]->,查询示例语句如下:

# 如果在1到3的关系中存在路径,将返回开始点和结束点
match data=(a:pest_category{pest_name:'病害'})-[*1..3]->(nb:insect_info) return data                                                         

二、直接拼接节点关系查询

查询示例语句如下:

# 直接通过某个名称查询所有的节点及关系
match (a:pest_category)-[re]->(b:insect_category)-[re2]->(c:insect_info{insect_name:'黄蜘蛛'}) return a,re,b,re2,c

三、使用with关键字查询

使用with关键字可以将前面查询结果作为后面查询条件,查询语句示例如下:

match (a:pest_category)-[re]->(b:insect_category) where b.category_type = 1 WITH a,re,b match (b:insect_category)-[re2]->(c:insect_info) return a,re,b,re2,c

四、通过where关键字查询

通过where关键字查询,同时可以加入筛选条件,使用contains关键字进行模糊查询,查询语句示例如下:

match (a:pest_category)-[re]->(b:insect_category)-[re2]->(c:insect_info) where c.insect_name contains('黄') return a,re,b,re2,c

加入orand进行查询:

match (a:pest_category)-[re]->(b:insect_category)-[re2]->(c:insect_info) where c.insect_name contains('黄') or a.pest_name contains('病') return a,re,b,re2,c

match (a:pest_category)-[re]->(b:insect_category)-[re2]->(c:insect_info) where c.insect_name contains('黄') or a.pest_name contains('病') or b.category_name contains('螨') return a,re,b,re2,c

match (a:pest_category)-[re]->(b:insect_category)-[re2]->(c:insect_info) where c.insect_name contains('') and a.pest_name contains('') and b.category_name contains('螨') return a,re,b,re2,c

参考:

https://blog.csdn.net/u013946356/article/details/81739079


评论
评论
  目录