Gremlin 小精灵。在父子关系中,按子关系的更高版本进行筛选

Gremlin 小精灵。在父子关系中,按子关系的更高版本进行筛选,gremlin,tinkerpop3,janusgraph,amazon-neptune,Gremlin,Tinkerpop3,Janusgraph,Amazon Neptune,我有一个父子结构。子级有一个版本和一个组。我需要根据组,父项为最新版本分组创建筛选器 此查询正确返回值,但我需要每种情况的顶点: g.V().hasLabel('Child') .group() .by( __.group() .by('tenant') .by(__.in('Has').values('name')) ) .by(__.values('version').max()) 有什么建议吗 谢谢你的帮助 数据: 输出: {{group1=child1}=0.0.2, {

我有一个父子结构。子级有一个版本和一个组。我需要根据
父项
为最新版本分组创建筛选器

此查询正确返回值,但我需要每种情况的顶点:

g.V().hasLabel('Child')
.group()
.by(
  __.group()
  .by('tenant')
  .by(__.in('Has').values('name'))
)
.by(__.values('version').max())
有什么建议吗

谢谢你的帮助


数据:

输出:

{{group1=child1}=0.0.2, {group2=child1}=0.1.2, {group1=child3}=3.0.3, {group1=child2}=0.1.2}
但我需要每个案例的顶点

我假设你指的是
子节点
顶点。以下遍历将为您提供所有数据:

gremlin> g.V().hasLabel("Child").
           group().
             by(union(values("tenant"), __.in("Has").values("name")).fold()).
           unfold()
==>[group2, child1]=[v[14]]
==>[group1, child1]=[v[6], v[10]]
==>[group1, child2]=[v[18]]
==>[group1, child3]=[v[22]]
但是,您可能希望它的结构稍微好一点:

gremlin> g.V().hasLabel("Child").
           group().
             by(union(values("tenant"), __.in("Has").values("name")).fold()).
           unfold().
           project('tenant','name','v').
             by(select(keys).limit(local, 1)).
             by(select(keys).tail(local, 1)).
             by(select(values).unfold())
==>[tenant:group2,name:child1,v:v[14]]
==>[tenant:group1,name:child1,v:v[6]]
==>[tenant:group1,name:child2,v:v[18]]
==>[tenant:group1,name:child3,v:v[22]]
但我需要每个案例的顶点

我假设你指的是
子节点
顶点。以下遍历将为您提供所有数据:

gremlin> g.V().hasLabel("Child").
           group().
             by(union(values("tenant"), __.in("Has").values("name")).fold()).
           unfold()
==>[group2, child1]=[v[14]]
==>[group1, child1]=[v[6], v[10]]
==>[group1, child2]=[v[18]]
==>[group1, child3]=[v[22]]
但是,您可能希望它的结构稍微好一点:

gremlin> g.V().hasLabel("Child").
           group().
             by(union(values("tenant"), __.in("Has").values("name")).fold()).
           unfold().
           project('tenant','name','v').
             by(select(keys).limit(local, 1)).
             by(select(keys).tail(local, 1)).
             by(select(values).unfold())
==>[tenant:group2,name:child1,v:v[14]]
==>[tenant:group1,name:child1,v:v[6]]
==>[tenant:group1,name:child2,v:v[18]]
==>[tenant:group1,name:child3,v:v[22]]

你能展示一下你现在得到的输出和你想看到的输出吗。另外,如果你能提供一个小的测试图,那将非常有帮助。我用数据样本和输出更新了我的问题。谢谢@KelvinLawrence。请您展示一下您现在获得的输出以及您希望看到的输出。另外,如果你能提供一个小的测试图,那将非常有帮助。我用数据样本和输出更新了我的问题。谢谢@kelvinlawrence谢谢你的帮助!这真的很有帮助!谢谢你的帮助!这真的很有帮助!