我有一个用户的活动链接列表,如下所示:
(user)-ACTIVITIES->(activity)-NEXT*->(activity)->...
每个活动节点都与源节点和目标节点相关
(theSource)<-SOURCE-(activity)-TARGET->(theTarget)
我想检索所有活动,并在源上使用过滤器。如何使用源节点进行过滤?我想过滤活动,其中source.email ='someone@email.com'。此代码不起作用:/
g.v(1).out('ACTIVITIES')
.as('x')
.out('NEXT')
.loop('x'){it.loops <= 10}{true}
.filter{
it.out('SOURCE').email == 'someone@email.com'
}
如何在过滤器闭包中使用链接节点进行过滤?这是一个很好的方法吗?
此致
答案 0 :(得分:2)
您需要在过滤器中接下来()您的管道。它应该是:
.filter{
it.out('SOURCE').email.next() == 'someone@email.com'
}
没有next
,你在管道上做的是一个永远不会返回true的相等。
作为一个补充建议,我建议你在循环中改变你的发射闭合(第二个)。 emit关闭控制逃离管道的物品。通过现在设置为true
,它会释放所有内容,然后您应用过滤器。更简洁的方法是让你的遍历看起来像这样:
g.v(1).out('ACTIVITIES')
.as('x')
.out('NEXT')
.loop('x'){it.loops <= 10}{it.out('SOURCE').email.next() == 'someone@email.com'}
通过这种方式,您可以处理emit封闭中的过滤,而不是管道的单独步骤。