如何在单个 gremlin 查询中获取多个 vertices/edges?
How to get multiple vertices/edges in a single gremlin query?
我处于需要使用单个查询获取两种不同类型的顶点的情况。例如,假设图形具有以下结构:
Node("User")--Edge("is_member")-->Node("Membership")--Edge("is_member")-->Node("Group")
假设节点具有以下属性:
- 会员资格
- 状态
- 日期
- 组
- 姓名
- 日期
- 类型
现在,我需要获取用户 is_member
的所有 Membership
节点,以及相应的 Group
的 name
。如何为此编写 Gremlin 查询?
我正在使用 Bulbs 框架。如何将结果存储在 python 对象中?
以下查询为用户 u1
提供了包含 key = Membership-Node
和 value = list of group names of the key membership node
的地图:
m=[:];u1.out('is_member').groupBy(m){it}{it.out('is_member').name}
输出为:
gremlin> m
==>v[m1]=[group1]
==>v[m2]=[group2, group3]
此处使用的示例图:
g = new TinkerGraph()
u1 = g.addVertex('u1')
u2 = g.addVertex('u2')
m1 = g.addVertex('m1')
m2 = g.addVertex('m2')
g1 = g.addVertex('g1')
g2 = g.addVertex('g2')
g3 = g.addVertex('g3')
g.addEdge(u1, m1, 'is_member')
g.addEdge(u1, m2, 'is_member')
g.addEdge(u2, m2, 'is_member')
g.addEdge(m1, g1, 'is_member')
g.addEdge(m2, g2, 'is_member')
g.addEdge(m2, g3, 'is_member')
g1.name = 'group1'
g2.name = 'group2'
g3.name = 'group3'
另请参阅:How do I write a sub-query?
(使用 gremlin2 测试)
我处于需要使用单个查询获取两种不同类型的顶点的情况。例如,假设图形具有以下结构:
Node("User")--Edge("is_member")-->Node("Membership")--Edge("is_member")-->Node("Group")
假设节点具有以下属性:
- 会员资格
- 状态
- 日期
- 组
- 姓名
- 日期
- 类型
现在,我需要获取用户 is_member
的所有 Membership
节点,以及相应的 Group
的 name
。如何为此编写 Gremlin 查询?
我正在使用 Bulbs 框架。如何将结果存储在 python 对象中?
以下查询为用户 u1
提供了包含 key = Membership-Node
和 value = list of group names of the key membership node
的地图:
m=[:];u1.out('is_member').groupBy(m){it}{it.out('is_member').name}
输出为:
gremlin> m
==>v[m1]=[group1]
==>v[m2]=[group2, group3]
此处使用的示例图:
g = new TinkerGraph()
u1 = g.addVertex('u1')
u2 = g.addVertex('u2')
m1 = g.addVertex('m1')
m2 = g.addVertex('m2')
g1 = g.addVertex('g1')
g2 = g.addVertex('g2')
g3 = g.addVertex('g3')
g.addEdge(u1, m1, 'is_member')
g.addEdge(u1, m2, 'is_member')
g.addEdge(u2, m2, 'is_member')
g.addEdge(m1, g1, 'is_member')
g.addEdge(m2, g2, 'is_member')
g.addEdge(m2, g3, 'is_member')
g1.name = 'group1'
g2.name = 'group2'
g3.name = 'group3'
另请参阅:How do I write a sub-query?
(使用 gremlin2 测试)