【问题标题】:how to get the count of employees having same skill and same location using gremlin query如何使用 gremlin 查询获得具有相同技能和相同位置的员工数量
【发布时间】:2022-10-08 04:49:00
【问题描述】:

eq:在 hyd ofc 位置有多少员工具有 Java 技能, 在 vizag ofc 位置有多少员工具有 Java 技能

同样,它应该检查技能名称、员工和差异位置并从 ea 获取 emp ch 位置

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。

标签: gremlin janusgraph


【解决方案1】:

使用此处的人员、办公室和技能示例图

g.addV('Employee').property('name','Bob').as('b').
  addV('Employee').property('name','Tom').as('t').
  addV('Employee').property('name','Sally').as('s').
  addV('Employee').property('name','Alice').as('a').
  addV('Employee').property('name','Curt').as('c').
  addV('Employee').property('name','Daisy').as('d').
  addV('Office').property('location','Los Angeles').as('la').
  addV('Office').property('location','New York').as('ny').
  addV('Skill').property('skill','Java').as('java').
  addV('Skill').property('skill','Python').as('python').
  addV('Skill').property('skill','React').as('react').
  addE('worksAt').from('b').to('la').
  addE('worksAt').from('t').to('la').
  addE('worksAt').from('s').to('la').
  addE('worksAt').from('a').to('ny').
  addE('worksAt').from('c').to('ny').
  addE('worksAt').from('d').to('ny').
  addE('hasSkill').from('b').to('java').
  addE('hasSkill').from('t').to('java').
  addE('hasSkill').from('s').to('python').
  addE('hasSkill').from('a').to('python').
  addE('hasSkill').from('c').to('react').
  addE('hasSkill').from('d').to('react').
  addE('hasSkill').from('b').to('react').
  addE('hasSkill').from('s').to('java')

您需要派生一个项目,其中包含位置、员工和技能的所有可能组合。我假设您希望按办公室位置进行此操作,因此我们应该从办公室顶点开始:

g.V().hasLabel('Office').as('ofc').
   in('worksAt').as('emp').
   out('hasSkill').as('skl').
   select('emp','ofc','skl').
      by('name').
      by('location').
      by('skill')

这将为我们提供所有组合:

[{'emp': 'Bob', 'ofc': 'Los Angeles', 'skl': 'React'},
 {'emp': 'Bob', 'ofc': 'Los Angeles', 'skl': 'Java'},
 {'emp': 'Tom', 'ofc': 'Los Angeles', 'skl': 'Java'},
 {'emp': 'Sally', 'ofc': 'Los Angeles', 'skl': 'Java'},
 {'emp': 'Sally', 'ofc': 'Los Angeles', 'skl': 'Python'},
 {'emp': 'Alice', 'ofc': 'New York', 'skl': 'Python'},
 {'emp': 'Curt', 'ofc': 'New York', 'skl': 'React'},
 {'emp': 'Daisy', 'ofc': 'New York', 'skl': 'React'}]

然后我们需要做一个 GROUP-BY 操作来按办公室获取具有一定技能的员工的数量。因此,我们将从上面的查询中添加以下内容:

g.V().hasLabel('Office').as('ofc').
   in('worksAt').as('emp').
   out('hasSkill').as('skl').
   select('emp','ofc','skl').
      by('name').
      by('location').
      by('skill')
   group().
      by('ofc').
      by(
         groupCount().
         by('skl')
      )

这将提供如下响应:

[{'New York': {'React': 2, 'Python': 1},
  'Los Angeles': {'Java': 3, 'React': 1, 'Python': 1}}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2021-09-26
    • 2021-06-13
    • 2019-01-06
    • 2018-11-14
    相关资源
    最近更新 更多