我可能需要修改我的答案,因为我可能需要你正在努力实现(如@迈克尔还要求)什么更多的细节,但如果你认为你的问题是next()
,然后考虑以下几点:
user = g.v(42);
g.idx('comparisons')[[id:Neo4jTokens.QUERY_HEADER + '*']]
.filter{it.out('COMPARED_VALUE1').in('VOTED').in('VOTES').next().equals(user)}.count();
首先,注意上面,你的封过滤器可以立即降低到(这将产生同样的错误,当然)。考虑到过滤器关闭,你假设当你使用next()
时,用户顶点将从管道中流出。情况可能并非如此。因此,我会重新写一个过滤器封口:
user = g.v(42);
g.idx('comparisons')[[id:Neo4jTokens.QUERY_HEADER + '*']].filter{
def p = it.out('COMPARED_VALUE1').in('VOTED').in('VOTES')
p.hasNext() ? p.next().equals(user) : false
}.count();
这应该会解决你的问题就在那里因为你只需要在管道p
评估的第一项假设这是你有效地什么在做之前。我想知道,如果你不能简单地使用except/retain pattern这里得到答案,因为它是少了几分令人费解:
user = g.v(42);
g.idx('comparisons')[[id:Neo4jTokens.QUERY_HEADER + '*']]
.out('COMPARED_VALUE1').in('VOTED').in('VOTES').retain([user])
.count();
希望的东西在这里把你在正确的轨道,以你的答案上。
你想达到什么目的? –