子图查询或者“模式匹配”查询

  • nebula 版本:v2.0.0beta
  • 部署方式(分布式 / 单机 / Docker / DBaaS):docker
  • 硬件信息
    • 磁盘( 必须为 SSD ,不支持 HDD)500GB SSD
    • CPU、内存信息:40C 128G
  • 问题的具体描述
    当前v2版本提供的子图查询,使用get subgraph获取从某一个点开始,按照指定边所能到达的全部点和边,其中无法追加条件判断。
    不是很清楚改子图查询怎么用起来?
    请问官方是否有比较明确的试用场景?

另外,我想做一个类似的下面的需求的子图查询,不知道有什么办法实现:
已知:tag A,B,C当且仅当A.name == ‘aaaaa’ and 存在 edge ab(A->B) and B.name==‘bbbbb’ and 存在 edge bc(B->C) and C.name=='ccccc’时,认为符合特定的模式。
现在需要在图数据库查询出全部满足上述特定模式的数据。
利用现有的子图查询可否实现上面的需求?

本人的尝试:


lookup on tagA where A.name = 'aaaaa' yield A._vid as vid| 
get subgraph 2 steps from $-.vid out ab, bc

上述查询基于lookup 可以返回节点的id并在管道中使用。
但是由于我想要查询的结果包含众多条件,故直接使用get subgraph可能包含很多其余的变,我无法筛选出仅仅包含我想要的点和边的结果。

2 个赞

经过本人测试,发现使用match进行模式匹配,基本可以满足我的需求。
语句如下:
match p = (v1:A{name:‘aaaaa’} -[e1:ab]-> (v2:B{name:‘bbbbb’} -[e2:bc]-> (v3:C{name:‘ccccc’}) return p

1 个赞

您好,如果中间的模式,不确定实体和边的属性和层级,怎么查询呢?