一、使用深度运算符
当要实现多深度关系节点查询时,可变数量的关系可以使用-[: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
加入or
和and
进行查询:
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
参考: