GraphHub使用Gremlin图遍历语言查询边最多的顶点数据

项目场景:GraphHub使用Gremlin图遍历语言查询边最多的顶点数据

项目场景:在可视化展示界面中,需要展示一个关系数据比较丰富的图结构。因此需要实现在图数据库中查询,边最多的顶点数据。


问题描述

在图数据库中查询边最多的顶点数据,使用Gremlin进行查询

1、查询出边最多的顶点
g.V().as('out').out()
.select('in')
.groupCount()
.unfold()
.filter(select(values).is(gt(0)))

结果展示

在这里插入图片描述

2、查询入边最多的顶点
g.V().as('in').in()
.select('in')
.groupCount()
.unfold()
.filter(select(values).is(gt(0)))

结果展示

在这里插入图片描述

3、查询两顶点关系最多的数据
g.V().as('out').out().as('in')
.select('out','in')
.groupCount()
.unfold()
.filter(select(values)
.is(gt(0)))

结果展示

在这里插入图片描述

方案优化:

上面方案得到了值基本的统计数据,下面我们要获取统计结果最符合的一条

1、查询出边最多的顶点
g.V().as('out').out()
.select('out')
.groupCount()
.unfold()
.filter(select(values)
.is(gt(0)))
.order()
.by(values, decr)
.select(keys)
.limit(1)

结果展示

{
  "result": [
    {
      "label": "njcm",
      "type": "vertex",
      "properties": {
        "displayName": "",
        "g": "蜥形纲",
        "tz": "约10米,2008年居然发现了身长超过22米的鸭嘴龙。",
        "m": "脊索动物门",
        "create_time": 1675740718815,
        "tz1": "约4吨",
        "alias": [],
        "bpss": "每小时约20-25公里",
        "description": "",
        "fbqy": "北美、北极、中国",
        "identifier": "yzl",
        "name": "鸭嘴龙",
        "sx": "草食性",
        "k": "鸭嘴龙科",
        "s": "鸭嘴龙属",
        "scnd": "6500万-8000万年前,白垩纪晚期",
        "gs": [
          "{\"text\":\"鸭嘴龙(hadrosaurs) 为一类较大型的鸟臀类恐龙,最大的有15米多长。是白垩纪后期鸟盘目草食性恐龙家族的其中一员。}"
        ],
        "shxx": "鸭嘴龙...",
        "m1": "鸟臀目",
        "point_num": 15,
        "ym": "鸟脚亚目",
        "update_time": 1675749292041,
        "j": "动物界",
        "rate": 78.95
      },
      "id": "269d3090c8e045c29cf2118d66a9cf97"
    }
  ]
}
2、3查询优化效果一样

参数说明:
.groupCount():统计查询数量,根据主键;
.filter(select(values).is(gt(0))):过滤值大于0的数据;
.order().by(values, decr): 根据值进行排序
.select(keys):根据主键取顶点的值
.limit(1):去最前面的第一条

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值