【发布时间】:2022-10-08 04:49:00
【问题描述】:
eq:在 hyd ofc 位置有多少员工具有 Java 技能, 在 vizag ofc 位置有多少员工具有 Java 技能
同样,它应该检查技能名称、员工和差异位置并从 ea 获取 emp ch 位置
【问题讨论】:
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
标签: gremlin janusgraph
eq:在 hyd ofc 位置有多少员工具有 Java 技能, 在 vizag ofc 位置有多少员工具有 Java 技能
同样,它应该检查技能名称、员工和差异位置并从 ea 获取 emp ch 位置
【问题讨论】:
标签: gremlin janusgraph
使用此处的人员、办公室和技能示例图
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}}]
【讨论】: