两个节点中具有多条边时,如何只采样其中的一条

  • nebula 版本:2.6.2

  • 部署方式:分布式

  • 安装方式:源码编译

  • 是否上生产环境:Y

  • 硬件信息

    • 磁盘:SSD
    • CPU、内存信息 :64core 128G
  • 问题的具体描述
    如下,当两个节点之间具有多条不同rank的边时,如何GO FROM随机的获取其中一条边

GO 和 LIMIT 组合使用下?LIMIT and SKIP - NebulaGraph Database 手册

如文档所说,LIMIT是当 A节点到B节点和A节点到C节点中选择一个,并不是从AB节点中的3条边种选择1个,所以limit并不能实现这个需求

如果随机采样不是为了性能考虑的话,可以考虑用 group by 实现。比如:

go from xx over yy yield $-._vid as src, $$._vid as dst, yy.prop as prop | 
group by $-.src, $-.dst yield $-.src as src, $-.dst as dst, max($-.prop) as prop

如果是考虑性能的话,nebula 这个特性还没支持。

1 个赞

另外,看你的业务场景是怎样的。如果你是为了呈现关系,同时期望有较好的查询性能,也可以考虑新增一条关系边或汇总边或最新边,这样查询的时候直接取这个类型就好,就不存在这个limit的问题

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