Gremlin 如何从遍历中使用的顶点收集值?

Gremlin 如何从遍历中使用的顶点收集值?,gremlin,Gremlin,我想要一个顶点的细节以及连接到它的顶点的细节 我有一个组顶点,传入“成员”边到用户顶点。我想要顶点的细节 g.V(1)。as('a')。在('member').valueMap().as('b')。选择('a','b').unfold().dedup() 理想情况下,我想要的是: {label:'group',id=1,name='A group',users=[{id=2,label=“user”,name=“…”},…}]} 当我尝试一个项目时,它不喜欢我使用“in” gremlin>g.V

我想要一个顶点的细节以及连接到它的顶点的细节

我有一个组顶点,传入“成员”边到用户顶点。我想要顶点的细节

g.V(1)。as('a')。在('member').valueMap().as('b')。选择('a','b').unfold().dedup()

理想情况下,我想要的是:

{label:'group',id=1,name='A group',users=[{id=2,label=“user”,name=“…”},…}]}

当我尝试一个
项目时,它不喜欢我使用“in”

gremlin>g.V('1').project('name','users').by('name').by(in('member').select())
groovysh_parse:1:意外标记:在@1行第83列。

“name”、“users”).by('name').by(in('member

因为
in
是Groovy中的保留关键字,所以必须使用详细语法
\uuuu.in

尝试:


要获得首选的输出格式,您必须将组的
valueMap()
与用户列表结合起来。在TinkerPop的modern toy graph上,您可以执行以下操作:

gremlin> g.V(3).union(valueMap(true).
                        by(unfold()), 
                      project('users').
                        by(__.in('created').
                           valueMap(true).
                             by(unfold()).
                           fold())).
                unfold().
                group().
                  by(keys).
                  by(select(values))
==>[name:lop,id:3,lang:java,label:software,users:[[id:1,label:person,name:marko,...],...]]

将其映射到图形应该非常简单,基本上只是更改标签。

看起来很有趣,我将尝试一下该查询,谢谢
g.V('1').project('name','users').by('name').by(__.in('member').valueMap(true).fold())
gremlin> g.V(3).union(valueMap(true).
                        by(unfold()), 
                      project('users').
                        by(__.in('created').
                           valueMap(true).
                             by(unfold()).
                           fold())).
                unfold().
                group().
                  by(keys).
                  by(select(values))
==>[name:lop,id:3,lang:java,label:software,users:[[id:1,label:person,name:marko,...],...]]