首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gremlin:针对多个连接的verticies进行分组的问题

Gremlin:针对多个连接的verticies进行分组的问题
EN

Stack Overflow用户
提问于 2019-04-13 03:47:50
回答 2查看 64关注 0票数 0

我正处于学习gremlin的早期阶段,因此我开始了一个使用gremlin的OrientDB (启用了修补程序)的项目。我得到了下面的顶点

团队、客户、人员、技术

所有的意图和目的都只是与团队、客户和技术一起工作。

团队支持客户,客户实现技术。因此,这个问题的模式如下所示

Vertex(label:team)->Edge(label:supports)->Vertex(label:client)->Edge(label:has_implemented)->Vertex(label:technology)

每个客户端只能由一个团队支持,但技术可以用于我的多个客户端。

我试图通过检查每个团队支持的客户端和这些客户端正在使用的技术,来获得每个团队支持的技术的计数。

使用下面的代码,我能够获得每个单独的团队编号和技术的计数,但我不能按计数的降序进行排序。我看过关于堆栈交换的其他分组示例,我认为select()出了问题,但我不确定我应该怎么做。

代码语言:javascript
复制
g.V().hasLabel('team').as('a').out('supports').out('has_implemented').as('b').select('a','b').by('teamnumber').by('name').groupCount().as('count').unfold()
EN

回答 2

Stack Overflow用户

发布于 2019-04-17 19:55:54

groupCount()步骤返回一个Map。您可以使用order()Map的值进行排序-以下操作应该有效:

代码语言:javascript
复制
g.V().hasLabel('team').as('a').
  out('supports'). 
  out('has_implemented').as('b').
  select('a','b').
    by('teamnumber').
    by('name').
  groupCount().
  order(local).
    by(values,desc)

我认为你可以简化你的查询并得到相同的结果,因为你想要每个“团队”的“技术”计数(你没有提到任何关于“客户”的东西):

代码语言:javascript
复制
g.V().hasLabel('team').as('a').
  out('supports'). 
  out('has_implemented').
  groupCount().
    by(select('a')).
  order(local).
    by(values,desc)
票数 1
EN

Stack Overflow用户

发布于 2019-04-17 23:07:35

由于问题主要是关于排序的,我认为Stephen完美地回答了这个问题;但是,我认为我更喜欢以下问题:

代码语言:javascript
复制
g.V().hasLabel('team').
  project('team','technologies').
    by('teamnumber').
    by(out('supports').
       out('has_implemented').
       groupCount().
         by('name').
       order(local).
         by(values, desc))

很简单,因为它不需要路径跟踪(因此它应该运行得更快,使用更少的内存)。

此外,我不确定你是否真的关心技术名称。只有当多个客户端使用相同的技术时,上述查询中的分组计数才有意义(结果可能会告诉您类似于"Team X支持其Z个客户端使用的技术Y“之类的内容)。也许你只想知道每个团队支持多少独特的技术,那么查询就会更简单:

代码语言:javascript
复制
g.V().hasLabel('team').
  project('team','technologies').
    by('teamnumber').
    by(out('supports').
       out('has_implemented').
       dedup().count()).
  order().
    by(select('technologies'), desc)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55658546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档