>我有一个用户活动的链接列表,如下所示:
(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'
}
如何在过滤器闭包中使用链接节点进行过滤?这是一个好方法吗?
问候
你需要在过滤器中 next() 你的管道。 它应该是:
.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'}
通过这种方式,您可以在发出闭包中处理过滤,而不是在管道的单独步骤中处理。