如何使用Gremlin查询统计各地点拥有相同技能的员工数量
Gremlin查询:按办公地点统计指定技能员工数
1. 查询单个地点的指定技能员工数
假设你的图模型结构如下:
- 员工顶点标签为
Employee,办公地点存储在location属性中(如 'hyd'、'vizag') - 技能是独立顶点(标签
Skill),员工与技能通过has_skill边关联
查询海得拉巴(hyd)拥有Java技能的员工数量:
g.V().hasLabel('Employee').has('location', 'hyd') .out('has_skill').hasLabel('Skill').has('name', 'Java') .count()
如果技能直接存储为员工的列表属性(如 skills),查询可简化为:
g.V().hasLabel('Employee').has('location', 'hyd') .has('skills', 'Java') .count()
2. 按所有地点分组统计指定技能员工数
如果需要一次性统计所有办公地点的指定技能员工数量,使用分组查询即可自动完成统计:
技能为关联顶点的场景
g.V().hasLabel('Employee') .out('has_skill').hasLabel('Skill').has('name', 'Java') .in('has_skill') .group().by('location').by(count())
返回结果为键值对集合,键是办公地点,值为对应地点拥有Java技能的员工数。
技能为员工属性的场景
g.V().hasLabel('Employee').has('skills', 'Java') .group().by('location').by(count())
3. 过滤特定地点分组统计
如果只需要统计指定的几个地点(如hyd和vizag),在查询中添加地点过滤条件:
// 技能为关联顶点的场景 g.V().hasLabel('Employee').has('location', within('hyd', 'vizag')) .out('has_skill').hasLabel('Skill').has('name', 'Java') .in('has_skill') .group().by('location').by(count())
内容的提问来源于stack exchange,提问作者user19442466
相关产品推荐
相关产品推荐

