使用 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())
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())
请帮我查询 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())
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())