0

我有一个用户活动的链接列表,如下所示:

(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'
}

如何在过滤器闭包中使用链接节点进行过滤?这是一个好方法吗?

问候

4

1 回答 1

2

您需要在过滤器中使用 next() 管道。它应该是:

.filter{
    it.out('SOURCE').email.next() == 'someone@email.com'
}

如果没有,next您将在永远不会返回 true 的管道上进行相等性。

作为补充建议,我建议您更改循环上的发出闭包(第二个)。发射闭包控制逃离管道的项目。通过设置true为您现在拥有它,它会发出所有内容,然后您正在应用过滤器。一个更紧凑的方法是让你的遍历看起来像这样:

g.v(1).out('ACTIVITIES')
.as('x')
.out('NEXT')
.loop('x'){it.loops <= 10}{it.out('SOURCE').email.next() == 'someone@email.com'}

通过这种方式,您可以在发出闭包中处理过滤,而不是管道的单独步骤。

于 2013-11-09T02:09:34.700 回答