使用 Gremlin 查询图形

Querying Graphs with Gremlin

请帮我查询 Gremlin lang

我有一个包含两种顶点的图表:用户和组。 我需要找到 'U1' 的朋友。如果用户有边缘(成员或邀请)到 'Group A' 需要像下面的结果一样标记他们。

预期结果:[ { U2: 'Member'}, { U3: 'Invited' }, { U4: 'Member'} ]

您可以从 U1 的顶点开始,从那里您可以使用 out 步骤找到他的所有朋友,然后使用 where 步骤过滤它们。

g.V().hasLabel('U1').out('Friend').
  where(out('Member', 'Invited').
    hasLabel('Group A'))

示例:https://gremlify.com/1o0chgjomi6/1

编辑

对于这种类型的结果,您可以这样做:

g.V().hasLabel('U1').out('Friend').
    as('friend').
  outE('Member', 'Invited').where(inV().
    hasLabel('Group A')).
  group().
    by(select('friend').label()).
    by(label())

示例:https://gremlify.com/4qnd7wi1rnv

g.V().has('User', 'name', 'U1')
  .out('friend')
  .as('friends')
  .bothE('invited', 'member', 'friend')
  .where(or(inV().has('Group', 'name', 'G1'), outV().has('User', 'name', 'U1')))
  .group()
  .by(select('friends').values('name'))
  .by(label().fold())