get subgraph的替代写法,如何过滤边的出入粒度

3.6版本

我对每个tag与其他tag的边关系都是专门的tagA_connect_tagB这种边类型,然后还有1:n的边类型,比如tagA_belong_tagB这种类型。

现在我需要获取一个点关联的子图,包含了tagA_belong_tagB这种类型,但是这可能是一个超级节点,我只能用out来过滤这个边(还是得获取一个belong的对端节点),但是子图的其他点可能要用in来过滤这个边,现在我改怎么写get subgraph呢,还是说用其他go语句代替?

我目前的ngql:

get subgraph with prop 1000 steps  from "ip_address_1" out tagA_connect_tagB, tagA_belong_tagC, tagB_connect_tagD,tagB_beloang_tagH  YIELD VERTICES AS nodes, EDGES AS e;

我希望的ngql: 超级节点返回一次节点信息,但不返回它被连接的数万或者数十万的节点数据。比如in out both混用

get subgraph with prop 1000 steps  from "ip_address_1" out tagA_connect_tagB, tagA_belong_tagC 
 in tagB_connect_tagD,tagB_beloang_tagH, both xxx_connect_xxx  YIELD VERTICES AS nodes, EDGES AS e;

可以考虑用union

子图里有部分超级节点,感觉union也没法很好处理超级节点连接的其他多余节点,其实我就想屏蔽其他连接超级节点的数十万节点,不然性能太低了

Get SubGraph filter 问题 - 问答 / 问题 - NebulaGraph 技术社区 (nebula-graph.com.cn)
可以参考这个,目前我的做法是,对超级节点加个属性,get subgraph 的时候,根据业务需要考虑是否在子图中完全过滤掉这种带有超级节点的点

2 个赞

如果知道超级节点本身,也可以过滤ID

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。