NebulaGraph中FIND PATH语句变量自定义及报错语法修正咨询
错误原因及修正方案
错误原因
LOOKUP语句默认返回包含顶点属性的结果集,直接赋值给$src/$dst后,FIND PATH无法识别集合类型变量作为起点/终点,必须提取具体的顶点ID(vid)。- 原语句未通过
YIELD指定返回vid,导致变量中没有存储可用的顶点标识,无法被FIND PATH调用。
正确语法写法
场景1:单顶点匹配(LOOKUP仅返回1个结果)
直接提取vid赋值给变量后执行路径查询:
$src = LOOKUP ON table WHERE table.table_name == "da_pubdata_bline_stat_df" YIELD id(vertex) AS vid; $dst = LOOKUP ON table WHERE table.table_name == "da_pubtb_opt_di" YIELD id(vertex) AS vid; FIND SHORTEST PATH WITH PROP FROM $src.vid TO $dst.vid OVER * BIDIRECT;
或者使用管道语句串联执行:
LOOKUP ON table WHERE table.table_name == "da_pubdata_bline_stat_df" YIELD id(vertex) AS src_vid | LOOKUP ON table WHERE table.table_name == "da_pubtb_opt_di" YIELD id(vertex) AS dst_vid | FIND SHORTEST PATH WITH PROP FROM $-.src_vid TO $-.dst_vid OVER * BIDIRECT;
场景2:多顶点匹配(LOOKUP返回多个结果)
使用FOREACH遍历所有匹配的顶点组合,逐一查询路径:
$src_list = LOOKUP ON table WHERE table.table_name == "da_pubdata_bline_stat_df" YIELD id(vertex) AS vid; $dst_list = LOOKUP ON table WHERE table.table_name == "da_pubtb_opt_di" YIELD id(vertex) AS vid; FOREACH($src IN $src_list) { FOREACH($dst IN $dst_list) { FIND SHORTEST PATH WITH PROP FROM $src.vid TO $dst.vid OVER * BIDIRECT; } }
内容的提问来源于stack exchange,提问作者Lisa Liu
相关产品推荐
相关产品推荐

